1.創建Page的基類(base.py)
import time class BasePage: """ 基礎Page層,封裝一些常用方法 """ def __init__(self, driver): self.driver = driver # 打開頁面 def open(self, url=None): if url is None: self.driver.get(self.url) else: self.driver.get(url) # id定位 def by_id(self, id_): return self.driver.find_element_by_id(id_) # name定位 def by_name(self, name): return self.driver.find_element_by_name(name) # class定位 def by_class(self, class_name): return self.driver.find_element_by_class_name(class_name) # XPath定位 def by_xpath(self, xpath): return self.driver.find_element_by_xpath(xpath) # CSS定位 def by_css(self, css): return self.driver.find_element_by_css_selector(css) # 獲取title def get_title(self): return self.driver.title # 獲取頁面text,僅使用XPath定位 def get_text(self, xpath): return self.by_xpath(xpath).text # 執行JavaScript腳本 def js(self, script): self.driver.execute_script(script)
2.百度搜索方法封裝在一起(baidu_page.py)
from Page_Object.base import BasePage class BaiduPage(BasePage): """百度Page層,百度頁面封裝操作到的元素""" url = "https://www.baidu.com" def search_input(self, search_key): self.driver.find_element_by_id("kw").send_keys(search_key) def search_button(self): self.driver.find_element_by_id("su").click()
3.百度搜索測試用例封裝在一起(test_baidu.py)
import unittest from time import sleep from selenium import webdriver from Page_Object.baidu_page import BaiduPage class TestBaidu(unittest.TestCase): @classmethod def setUpClass(cls): cls.driver = webdriver.Chrome() def test_baidu_search_case1(self): page = BaiduPage(self.driver) page.open() page.search_input("selenium") page.search_button() sleep(2) self.assertEqual(page.get_title(), "selenium_百度搜索") def test_baidu_search_case2(self): page = BaiduPage(self.driver) page.open() page.search_input("unittest") page.search_button() sleep(2) self.assertEqual(page.get_title(), "unittest_百度搜索") def test_baidu_search_case3(self): page = BaiduPage(self.driver) page.open() page.search_input("page object") page.search_button() sleep(2) self.assertEqual(page.get_title(), "page object_百度搜索") @classmethod def tearDownClass(cls): cls.driver.quit() if __name__ == '__main': unittest.main(verbosity=2)
測試結果如下: