一、Po模型的基本使用
1、创建baseDemo包,创建BasePage类
代码:
from selenium.webdriver.common.action_chains import ActionChains #鼠标操作
class BasePage():
# 实例化BasePage类时,事先执行的__init__方法,该方法需要传递参数
def __init__(self,driver,url):
self.driver=driver
self.url=url
# 进入网址
def get(self):
self.driver.get(self.url)
# 元素定位,替代八大定位
def get_element(self, *locator):
return self.driver.find_element(*locator)
# 点击
def left_click(self, *locator):
ActionChains(self.driver).click(self.get_element(*locator)).perform()
# 输入
def send_text(self, text, *locator):
self.driver.find_element(*locator).send_keys(text)
# 清除
def clear_text(self, *locator):
self.driver.find_element(*locator).clear()
# 表单切换
def switch_iframe(self, *locator):
self.driver.switch_to.frame(self.driver.find_element(*locator))
# 窗口切换
def switch_window(self, n):
self.driver.switch_to.window(self.driver.window_handles[n])
# 用于断言
def get_title(self):
return self.driver.title
2、创建pagedemo包,创建Scares类
代码:
from pypo1.basepage.basepage import BasePage
from selenium.webdriver.common.by import By
class Search(BasePage):
def __init__(self,driver,url):
BasePage.__init__(self,driver,url)
# 进入百度
def open_baidu(self):
self.get()
# 搜索内容
def input_scares(self,text):
self.send_text(text,By.ID,"kw")
# 点击
def click_baidu(self):
self.left_click(By.ID,"su")
3、创建测试包
代码:
from pypo1.pages.pagebd import Search
import unittest
from selenium import webdriver
class TestBd(unittest.TestCase):
def setUp(self) -> None:
self.driver=webdriver.Firefox()
self.driver.implicitly_wait(30)
def test_bd(self):
url="https://www.baidu.com"
s=Search(self.driver,url)
s.open_baidu()
s.input_scares("python")
s.click_baidu()
def tearDown(self) -> None:
pass
# self.driver.quit()
if __name__ == '__main__':
unittest.main()
结果:
总结:po模型属于在selenium中进行了再次封装,
1:将公共的方法放在basepage类中,比如获取元素,点击按钮,填充数据,表单切换,窗口切换等
2:将每个界面的业务放在对应的page模块中,继承basepage类,使用什么操作只需要调用父类的方法即可实现
3:在单元测试中,导入对应的模块,添加到测试用例中,就会执行该对应page页的操作