Page Object专题
页面对象模型的设计优势:
- 创造可以被多个测试用例共享的可重用代码。
- 减少大量重复的代码。
- 如果用户界面发生改变,则修改只用在一处进行。
图片来源:
https://www.guru99.com/page-object-model-pom-page-factory-in-selenium-ultimate-guide.html
目的:测试代码与被测页面对象代码分离,后期如果有页面元素发生了更改,只需要修改相应页面对象的代码(即对应Class文件),而不需要修改测试的代码。
尽量使用XPath来寻找页面元素。
from selenium import webdriver
2 from selenium.webdriver.firefox.firefox_binary import FirefoxBinary
3 import time
4
5 binary=FirefoxBinary('/usr/local/firefox/firefox')
6 driver=webdriver.Firefox(firefox_binary=binary)
7 print('Before login================')
8 title=driver.title
9 print(title)
10 now_url=driver.current_url
11 print(now_url)
12
13 driver.implicitly_wait(10)
14 driver.get("https://mail.qq.com/")
15 driver.switch_to_frame("login_frame")
16 driver.find_element_by_id("u").clear()
17 driver.find_element_by_id("u").send_keys("*")
18 driver.find_element_by_xpath("//*[@id='p']").clear()
19 driver.find_element_by_xpath("//*[@id='p']").send_keys("*")
20 driver.find_element_by_xpath("//*[@id='login_button']").click()
21 print('After login===================')
22 title=driver.title
23 print(title)
24 now_url=driver.current_url
25 print(now_url)
26 user=driver.find_element_by_xpath("//*[@id='useralias']").text
27 print(user)
28 driver.quit()
用PageObject改造后:page.py,element.py,locators.py,测试文件是test_qq.py
参照
的写法写了一下,执行时长11s.
test_qq.py
1