basics页面 from selenium import webdriver from selenium.webdriver.remote.webdriver import WebElement from selenium.webdriver.support.wait import WebDriverWait as WDW from time import sleep class BasePage: def __init__(self, driver: webdriver.Chrome, timeout=10, poll=0.1): self.driver = driver self.driver.maximize_window() self.wdw = WDW(self.driver, timeout, poll) def go(self): if hasattr(self, "url"): self.driver.get(self.url) def find_ele(self, loc) -> WebElement: print(f"定位方式 -> {loc}") return self.wdw.until(lambda x: x.find_element(*loc)) def input(self, loc, value): print(f"输入 {value} 到 {loc}") self.find_ele(loc).send_keys(value) def click(self, loc, _count=1): print(f"点击{_count}") for i in range(_count): self.find_ele(loc).click() def clear(self, loc): print(f"清空 {loc} 内容") self.find_ele(loc).clear() def assert_title(self, title): sleep(3) assert self.driver.title == title
基础页
from selenium import webdriver from pages.base_page import BasePage from selenium.webdriver.common.by import By class BaiDuHome(BasePage): url = "https://baidu.com" input_baidu_search = By.NAME, "wd" button_baidu_search = By.ID, "su" def input_value(self, value): self.input(self.input_baidu_search, value) def click_baidu(self): self.click(self.button_baidu_search)
test页
import unittest from selenium import webdriver from pages.bd_pages import BaiDuHome from selenium.webdriver.chrome.options import Options class TestBaidu(unittest.TestCase): opt = Options() opt.headless = True # 无头(无界)模式 def test_baidu_search_java(self): driver = webdriver.Chrome(options=self.opt) # 无头(无界)模式 # driver = webdriver.Chrome() bh = BaiDuHome(driver) bh.go() bh.input_value("java") bh.click_baidu() bh.assert_title("java_百度搜索") def test_baidu_search_python(self): driver = webdriver.Chrome(options=self.opt) # 无头(无界)模式 # driver = webdriver.Chrome() bh = BaiDuHome(driver) bh.go() bh.input_value("python") bh.click_baidu() bh.assert_title("python_百度搜索") def test_baidu_search_c(self): driver = webdriver.Chrome(options=self.opt) # 无头(无界)模式 # driver = webdriver.Chrome() bh = BaiDuHome(driver) bh.go() bh.input_value("c++") bh.click_baidu() bh.assert_title("c--_百度搜索")