Python用Selenium做自动化测试(三):Page Object专题

本文探讨了Python使用Selenium进行自动化测试时的Page Object模型,强调其优势在于代码重用和减少重复,当UI变化时只需在一个地方修改。通过Page Object改造,测试代码与页面元素代码分离,降低了维护成本。文中介绍了如何组织page.py、element.py、locators.py和测试文件,以及优化PageObject的方法,提供了一个易于编程的接口,将GUI控件的操作封装为行为导向的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Page Object专题

页面对象模型的设计优势:

  • 创造可以被多个测试用例共享的可重用代码。
  • 减少大量重复的代码。
  • 如果用户界面发生改变,则修改只用在一处进行。

Page Object Model (POM) & Page Factory in Selenium: Complete Tutorial

图片来源:

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 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值