1. 简介
今天我们继续前边的练习, 学习和练习一下: 如何使用 webdriver 方法获取操作复选框 - CheckBox, 测试不同的分辨率, 如何断言 title, 如何获取某一个元素的 text 属性值等等, 这些小练习, 来巩固基础.
2. 操作复选框 - Checkbox
本小节介绍 Selenium 中, 如何操作复选框 - Checkbox, 最终的方法还是 click().
本来想还是继续采用 for 语句来把所有的复选框勾选一遍, 例如这样的场景: 注册一个网站勾选身份或者职业的时候, 由于没有找到合适的 demo 网站. 这里还是以百度举例, 登录时, 勾选下次自动登录:
(1) 访问百度主页面, 点击百度首页的 "登录",xpath 定位如下:
(2) 点击 "用户名登录",xpath 定位如下图:
(3) 点击下次自动登录点选按钮, xpath 定位如下:
相关脚本代码如下:
2.1 代码实现:
2.2 参考代码:
- # coding=utf-8
- # 1. 先设置编码, utf-8 可支持中英文, 如上, 一般放在第一行
- # 2. 注释: 包括记录创建时间, 创建人, 项目名称.
- '''
- Created on 2019-12-04
- @author: 北京 - 宏哥 QQ 交流群: 705269076
- Project: python+ selenium 自动化测试练习篇 5
- '''
- # 3. 导入模块
- import time
- from selenium import webdriver
- driver = webdriver.Chrome()
- driver.maximize_window()
- driver.get('https://www.baidu.com')
- driver.implicitly_wait(8)
- driver.find_element_by_xpath("//*[@id='u1']/a[7]").click()
- time.sleep(1)
- driver.find_element_by_xpath(".//*[@id='TANGRAM__PSP_10__footerULoginBtn']").click()
- time.sleep(1)
- driver.find_element_by_xpath(".//*[@id='TANGRAM__PSP_10__memberPass']").click()
- time.sleep(1)
- driver.find_element_by_xpath(".//*[@id='TANGRAM__PSP_10__memberPass']").click()
2.3 运行结果:
运行代码后, 控制台打印如下图的结果
由于这个勾选是默认选中的, 这里方便观察点击效果, 点击了两次. 如果有多个复选框, 考虑用 for 循环, 参考前面 radio button 的方法.
3. 测试不同分辨率
本小节来学习下如何通过 Selenium 方法, 设置符合不同测试场景浏览器窗口大小. 例如, 你有一台机器, 最大支持 1366*768, 你完全可以利用这个机器测试不同分辨率下的场景.
相关测试脚本代码如下:
3.1 代码实现:
3.2 参考代码:
- # coding=utf-8
- # 1. 先设置编码, utf-8 可支持中英文, 如上, 一般放在第一行
- # 2. 注释: 包括记录创建时间, 创建人, 项目名称.
- '''
- Created on 2019-12-04
- @author: 北京 - 宏哥 QQ 交流群: 705269076
- Project: python+ selenium 自动化测试练习篇 5
- '''
- # 3. 导入模块
- import time
- from selenium import webdriver
- driver = webdriver.Chrome()
- driver.maximize_window() # 全屏
- driver.get('https://www.baidu.com')
- time.sleep(1)
- print (driver.get_window_size())
- driver.set_window_size(1280,800) # 分辨率 1280*800
- time.sleep(1)
- print (driver.get_window_size())
- driver.set_window_size(1024,768) # 分辨率 1024*768
- time.sleep(1)
- print (driver.get_window_size())
3.3 运行结果:
运行代码后, 控制台打印如下图的结果
4. title 断言方法
本小节介绍一个 Selenium 中页面 title 断言方法, 这个在以后的断言中会用到, 大致都是换汤不换药, 照猫画虎就可以了, 但是在这里一定要认真学习和练习, 后边应用起来才回得心应手.
相关脚本代码如下:
4.1 代码实现:
4.2 参考代码:
- # coding=utf-8
- # 1. 先设置编码, utf-8 可支持中英文, 如上, 一般放在第一行
- # 2. 注释: 包括记录创建时间, 创建人, 项目名称.
- '''
- Created on 2019-12-04
- @author: 北京 - 宏哥 QQ 交流群: 705269076
- Project: python+ selenium 自动化测试练习篇 5
- '''
- # 3. 导入模块
- import time
- from selenium import webdriver
- driver = webdriver.Chrome()
- driver.maximize_window()
- driver.get('https://www.baidu.com')
- time.sleep(1)
- # 方法一
- try:
- assert u"百度一下" in driver.title
- print ('Assertion test pass.')
- except Exception as e:
- print ('Assertion test fail.', format(e))
- # 方法二
- if u"百度一下, 你就知道" == driver.title :
- print ('Assertion test pass.')
- else:
- print ('Assertion test fail.')
- print(driver.title)
4.3 运行结果:
运行代码后, 控制台打印如下图的结果
方法一, 是利用 python 中 Assert 方法, 采用包含判断, 方法二是通过 if 方法, 采用完全相等方法, 建议选择第一种方法.
u"百度一下, 你就知道"
这 u 代表 unicode 的意思, 由于我们这里采用了 python 2, 如果你使用 pyn3 就不需要, 在 Python3 中, 字符串默认采用 unicode 存储.
5. 获取某一个元素的 text 属性值
本小节介绍如何通过 Selenium 方法来获取某一个元素的 text 属性值. 在很多自动化测试脚本中, 需要多次获取元素的 text 值, 拿过来进行对比和匹配. 例如, 在一个登陆界面, 如果不输入用户名和密码, 直接点击登录, 肯定会有相关错误提醒. 这个错误, 我们需
要通过 selenium 抓取出来, 和需求说明文档中的描述去进行匹配, 如果匹配, 测试成功, 否则失败.
这里用百度登录举例:
需要通过 Selenium 脚本去自动判断是否显示错误文字 "请您填写手机 / 邮箱 / 用户名", 前边已经定位到这个页面, 这里就不再赘述了, 这里需要定位 "登录" 按钮, 定位 text 的属性值.
(1) 定位 "登录" 按钮
(2) 定位 text 的属性值
相关脚本代码如下:
5.1 代码实现:
5.2 参考代码:
- # coding=utf-8
- # 1. 先设置编码, utf-8 可支持中英文, 如上, 一般放在第一行
- # 2. 注释: 包括记录创建时间, 创建人, 项目名称.
- '''
- Created on 2019-12-04
- @author: 北京 - 宏哥 QQ 交流群: 705269076
- Project: python+ selenium 自动化测试练习篇 5
- '''
- # 3. 导入模块
- import time
- from selenium import webdriver
- from selenium.webdriver.common.keys import Keys
- driver = webdriver.Chrome()
- driver.maximize_window()
- driver.implicitly_wait(6)
- driver.get("http://www.baidu.com/")
- time.sleep(1)
- # 点击百度首页 "登录" 按钮
- driver.find_element_by_xpath("//*[@id='u1']/a[7]").click()
- time.sleep(1)
- # 点击 "用户名登录"
- driver.find_element_by_xpath(".//*[@id='TANGRAM__PSP_10__footerULoginBtn']").click()
- # 点击登录页面的 "登录" 按钮
- driver.find_element_by_xpath(".//*[@id='TANGRAM__PSP_10__submit']").click()
- # 断言方法一
- try :
- error_message = driver.find_element_by_xpath("//*[@id='TANGRAM__PSP_10__error'and text()='请您输入手机 / 邮箱 / 用户名']").is_displayed()
- print ("Test pass. the error message is display.")
- except Exception as e:
- print ("Test fail.", format(e))
- # 断言方法二, 本文重点介绍方法
- error_mes = driver.find_element_by_xpath(".//*[@id='TANGRAM__PSP_10__error']").text
- try:
- assert error_mes == u'请您输入手机 / 邮箱 / 用户名'
- print ('Test pass.')
- except Exception as e:
- print ("Test fail.", format(e))
5.3 运行结果:
运行代码后, 控制台打印如下图的结果
总结:
要获取到目标元素的 text 的值, 需要定义一个目标元素 element, 然后通过 element.text 方法得到字符串, 注意不是 element.text(), 这个方法是没有带小括号的. 上面介绍了两个方法, 方法一是, 直接把字段写入 XPath 表达式, 如果通过该 XPath 能定位到元素, 说明这个
错误字段已经在页面显示; 方法二是通过该目标元素节点, 然后通过 element.text 得到值, 在拿得到的 text 值取和期待的结果去字符串匹配. 建议在自动化测试脚本开发中, 采用第二个方法.
6. 小结
好了, 今天的练习就到这里, 希望大家好好的练习和理解.
您的肯定就是我进步的动力. 如果你感觉还不错, 就请鼓励一下吧! 记得点波 推荐不要忘记哦!!!
来源: https://www.cnblogs.com/du-hong/p/11956076.html