page object
一、创建page object封装,save as base.py文件
import time class BasePage: """ 基础Page层,封装一些常用方法 """ def __init__(self,driver): self.driver = driver #打开页面 def open(self, url = None): if url == 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_name定位 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(sript)
二、创建baidu_page.py文件
from base import BasePage class BaiduPage(BasePage): """百度Page层,百度页面封装操作元素""" url = "https://www.baidu.com""" def search_input(self, search_key): self.by_id("kw").send_keys(search_key) def search_button(self): self.by_id("su").click()
三、百度搜索功能验证:
import unittest,time from time import sleep from selenium import webdriver from baidu_page import BaiduPage class TestBaidu(unittest.TestCase): @classmethod def setUpClass(cls): cls.driver = webdriver.Chrome() def test_baid_search_case(self): page = BaiduPage(self.driver) page.open() page.search_input("selenium") page.search_button() sleep(2) self.assertEqual(page.get_title(),"selenium_百度搜索") @classmethod def tearDownClass(cls): cls.driver.quit() if __name__=="__main__": unittest.main(verbosity=2)
四、poium测试库
应用poium库重写baidu_page.py
from poium import Page, NewPageElement class BaiduPage(Page): """百度Page层,百度页面封装操作到的元素""" search_input = NewPageElement(id_ = 'kw') search_button = NewPageElement(id_ = 'su')
在测试用例中的使用
import unittest,time from time import sleep from baidu_page import BaiduPage from selenium import webdriver class TestBaidu(unittest.TestCase): @classmethod def setUpClass(cls): cls.driver = webdriver.Chrome() def test_baidu_search_case(self): page = BaiduPage(self.driver) page.get("https://www.baidu.com/") page.search_input = "selenium" page.search_button.click() sleep(2) self.assertEqual(page.get_title,"selenium_百度搜索") @classmethod def tearDownClass(cls): cls.driver.quit() if __name__=="__main__": unittest.main(verbosity=2)
输出:
= RESTART: C:/Users/Administrator/AppData/Local/Programs/Python/Python38-32/practise.py test_baidu_search_case (__main__.TestBaidu) ... 2020-08-22 18:29:16,514 [32mINFO ✅ Find element: id=kw [0m 2020-08-22 18:29:17,524 [32mINFO 🖋 input element: undefined[0m 2020-08-22 18:29:17,761 [32mINFO ✅ Find element: id=su [0m 2020-08-22 18:29:18,742 [32mINFO 🖱 click element: undefined[0m ok ---------------------------------------------------------------------- Ran 1 test in 10.361s OK >>>