python selenium-8 Page Object模式
阿新 • • 發佈:2018-12-01
封裝空間操作為一個介面使用,而不是直接在頁面中查詢
from selenium import webdriver from selenium.webdriver.common.by import By from time import sleep class Page(): url="https://www.baidu.com" def __init__(self,driver,base_url=url): self.base_url = base_url self.driver=driver def on_page(self): print("on_page中的引數self.url"+self.url) return self.driver.current_url == (self.base_url + self.url) def _open(self,url): print("_open傳參:"+url) url = self.base_url + url; print("整合後的URL:"+url) self.driver.get(url) assert self.on_page(),"did not land on %s "%url def open(self): self._open(self.url) def find_element(self,*loc): return self.driver.find_element(*loc) class Search(Page): url='/' search_key = (By.XPATH,"//input[@id='kw' and @class='s_ipt']") def type_search(self,word): self.find_element(*self.search_key).send_keys(word) def type_submit(self): self.find_element(By.XPATH,"//input[@id='su']").click() def test_user_search(driver,word): search = Search(driver) search.open() #通過提供的方法直接操作控制元件,減少冗餘 search.type_search(word) search.type_submit() def main(): try: driver = webdriver.Chrome("/Users/chenshanju/PycharmProjects/SeleniumOfJenkins/driver/chromedriver") word="hello" test_user_search(driver,word) sleep(3) result_text = driver.find_element_by_xpath("//span[@class='nums_text']").text assert "百度為您找到相關結果約" in result_text,"結果比對失敗" finally: driver.quit() if __name__=="__main__": main()