首先是没有运用POM设计思想的案例:
import unittest
from time import sleep
from selenium import webdriver
#没有运用pom(页面对象模型)的思想 就是耦合度紧密,定位方法和测试用例在一个类中
class TestBaidu(unittest.TestCase):
# ctr+o
@classmethod
def setUpClass(cls) -> None:
cls.driver = webdriver.Chrome()
cls.driver.maximize_window()
def test_baidu(self):
self.driver.get('http://www.baidu.com')
self.driver.find_element_by_id('kw').send_keys('selenium')
self.driver.find_element_by_id('su').click()
sleep(5)
@classmethod
def tearDownClass(cls) -> None:
cls.driver.quit()
if __name__ == '__main__':
unittest.main()
运用pom思想的代码:
就是页面元素定位以及运行案例分开写
from selenium import webdriver
import unittest
from time import sleep
#这个类专门存放定位元素的
from selenium.webdriver.common.by import By
class BaiduPage(object):
def __init__(self):
self.driver=webdriver.Chrome()
self.driver.maximize_window()
self.input_element = (By.ID, 'kw')
self.btn_element = (By.ID, 'su')
#设置入口
def goto_baidu(self,url): #设置参数url
self.driver.get(url)
def baidu_dingwei(self,url,kww): #定位方法 #参数下方执行测试案例时会传
self.goto_baidu(url)
self.driver.find_element(*self.input_element).send_keys(kww)
self.driver.find_element(*self.btn_element).click()
sleep(3)
# 运行测试案例
class TestBaidu(unittest.TestCase):
def setUp(self) -> None:
self.baidupage=BaiduPage() #初始化
def test_search(self):
self.baidupage.baidu_dingwei('https://www.baidu.com',"selenium")
if __name__ == '__main__':
unittest.main()