页面对象模型变得简单。

selenium-elements的Python项目详细描述


页面对象模型变得简单。

  • 自由软件:BSD 2条款许可证

安装

pip install selenium-elements

文档

使用项目:

fromcontextlibimportcontextmanagerimportpytestfromseleniumimportwebdriverfromselenium.webdriver.common.byimportByfromselenium.webdriver.support.expected_conditionsimportstaleness_offromselenium.webdriver.support.waitimportWebDriverWaitfromselenium_elements.conditionsimportclickablefromselenium_elements.elementsimportPageElement,PageElements,RegionElementsfromselenium_elements.pageimportPage,Regionfromselenium_elements.validatorsimporttitle_matches,url_contains@contextmanagerdefwait_for_page_load(driver,timeout=30):old_page=driver.find_element_by_tag_name("html")yieldWebDriverWait(driver,timeout).until(staleness_of(old_page))classShow(Page):path="/show/{show_slug}/"validators=[title_matches("^[a-zA-Z]+ | PBS$"),url_contains("pbs.org/")]official_website_btn=PageElement(By.CLASS_NAME,"btn--visit",condition=clickable)@propertydefofficial_website_link(self):returnself.official_website_btn.get_attribute("href")classPromoShowRegion(Region):title_element=PageElement(By.CLASS_NAME,"carousel--show-strip__image-link")defopen(self):withwait_for_page_load(self.driver):self.title_element.click()returnShow(driver=self.driver,base_url=self.base_url,visit=False)deftitle(self):returnself.title_element.get_attribute("data-gtm-label")classHome(Page):path="/"load_timeout=30validators=[title_matches("^PBS: Public Broadcasting Service$"),url_contains("pbs.org/"),]promo_show_elements=PageElements(By.CLASS_NAME,"show-promo",find_on_page_load=True)promo_shows=RegionElements(region_class=PromoShowRegion,root_element=promo_show_elements)@pytest.fixturedefdriver():driver=webdriver.Chrome()yielddriverdriver.quit()deftest_foo(driver):home=Home(driver=driver,base_url="https://www.pbs.org")forshowinhome.promo_shows:print(show.title())show=home.promo_shows[0].open()print(show.official_website_link)assertTrue

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何将cassandra中的行数据转换为与列相关的嵌套json   java如何使用jcr XPath在jcr:content/@jcr:data中搜索?   java在使用openCV进行安卓开发时如何利用手机的广角镜头   java解析扩展了接口,结束了一个潜在的无限循环   位置服务的@Override方法中存在java Android应用程序错误   java本地线程的用途和需求是什么   具有左右子访问的java节点树遍历   java验证JsonWebToken签名   JUL日志处理程序中的java日志记录   嵌入式Java读取给定时间段的串行数据。   java有没有办法从多个URL获取多个图像?   java线程通过等待intent阻止自己发送intent   java Spring MVC解析多部分内容请求   java JPA/Hibernate静态元模型属性未填充NullPointerException   java格式错误的字符(需要引号,得到I)~正在处理   java为什么PrintWriter对象抛出FileNotFoundException?   java Neo4j未正确保存标签   java IE不加载图像