页面对象模型变得简单。
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