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.小结

好了,今天的练习就到这里,希望大家好好的练习和理解。

python测试脚本项目全程教程_《手把手教你》系列练习篇之5-python+ selenium自动化测试(详细教程)...相关推荐

  1. python selenium右键另存为_手把手教你系列练习篇之1python+ selenium自动化测试(详细教程)...

    1.简介 相信各位小伙伴或者同学们通过前面已经介绍了的Python+Selenium基础篇,通过前面几篇文章的介绍和练习,Selenium+Python的webUI自动化测试算是 一只脚已经迈入这个门 ...

  2. 脚本升级_手把手教你升级到Database 19c(3)| 终章教程

    点击▲关注 "ITPUB"   给公众号标星置顶 更多精彩 第一时间直达  前文回顾: 手把手教你升级到 Oracle  19c(1)| 教程来了手把手教你升级到 Oracle 1 ...

  3. python numpy安装教程_手把手教你搭建机器学习开发环境—Python与NumPy的超简安装教程...

    手把手教你搭建机器学习开发环境Python语言是机器学习的基础,所以,想要入门机器学习,配置好Python的开发环境是第一步.本文就手把手的教你配置好基于Python的机器学习开发环境.超简单!第一步 ...

  4. python测试脚本 进制转换_[python] 转换python脚本程序为二进制ELF

    方法1: freeze.py 来自python源码树. 安装pythonbrew,可安装定制化的独立python环境(略) python trunk/Tools/freeze/freeze.py ./ ...

  5. application实现网页计数_手把手教你利用爬虫爬网页(Python代码)

    本文主要分为两个部分:一部分是网络爬虫的概述,帮助大家详细了解网络爬虫:另一部分是HTTP请求的Python实现,帮助大家了解Python中实现HTTP请求的各种方式,以便具备编写HTTP网络程序的能 ...

  6. 云服务器架设网站教程_手把手教你搭建腾讯云服务器入门(图文教程)

    本文由博主 威威喵 原创 博客主页:https://blog.csdn.net/smile_running 背景 暑假期间,愁着无聊但也不能荒废学业吧,毕竟以后想靠技术混口饭吃!为了实施自己的计划,特 ...

  7. python网站有中文界面吗_手把手教你用python开发界面程序

    在本教程中 我们将通过使用Tkinter包编写一些python GUI示例来学习如何开发图形用户界面. Tkinter包是作为标准包随Python一起提供的 所以我们不需要安装任何东西来使用它. Tk ...

  8. 小米手机扩容教程_手把手教你把手机16G内存升级128G 【图文教程】

    教你们如何把iPhone手机16G升级128G 有好多果粉都在抱怨自己买的16GB内存不够用,玩游戏各种内存不足,拍相片各种不足,所以今天小编直接推送升级128GB详细教程,在此技术分享给有需要的人. ...

  9. python网络爬虫网易云音乐_手把手教你写网络爬虫(1):网易云音乐歌单

    大家好,<手把手教你写网络爬虫>连载开始了!在笔者的职业生涯中,几乎没有发现像网络爬虫这样的编程实践,可以同时吸引程序员和门外汉的注意.本文由浅入深的把爬虫技术和盘托出,为初学者提供一种轻 ...

最新文章

  1. 设计模式学习1:设计模式简述和设计模式原则
  2. 10大类、142条数据源,中文NLP数据集线上搜索开放
  3. iis服务器建立动态网站,09-IIS添加动态网站
  4. java super和this总结
  5. Corba传值包含中文解决
  6. java.lang.OutOfMemoryError: Java heap space异常
  7. 【牛客2021暑假多校10】Train Wreck(出栈顺序,建树,优先队列维护)
  8. js 正则 exec() 和 match() 数据抽取
  9. java导出excel水印_java解决poi导出excel文字水印,导出excel不可操作问题
  10. 快速排序之螺钉螺母匹配
  11. 乐学python靠谱吗_【乐学100】-乐学100怎么样|地址|成立时间-比网校
  12. Retrofit(Okhttp)Dns解析服务器域名异常时尝试使用服务器IP访问
  13. windows7蓝牙怎么打开_避开网络限制,通过蓝牙共享网络连接
  14. HANA数据库备份脚本案例(刘欣)
  15. 五个受用一生的学习网站,高效免费,想提升自己能力的快来看看
  16. java ipone 微信昵称emoji表情保存失败 无法存入数据库
  17. 三个因素剖析质量流量计读数不准,应对故障更轻松
  18. 使用分布式图计算系统实现研报关键词权重分数计算性能提升百倍以上
  19. 计算机的常见故障处理实验报告,实训13 微机常见故障处理实训报告.doc
  20. 机器学习(二)线性模型——线性回归、对数几率回归、线性判别分析

热门文章

  1. qtplaintextedit如何删除内容_(mac常见问题)如何删除 Mac 储存空间的其他选项?...
  2. python怎么设置字段_Django Model中字段(field)的各种选项说明
  3. channelinboundhandler中都包含了哪一类的方法_备考CMA考试有哪些方法技巧?
  4. 怎么判断网络回路_收藏|电梯安全回路分析说明及故障判断
  5. mysql的别名可以动态么_mysql别名的使用
  6. aide怎么打开html文件,求助!aide获取网页html源码
  7. python脚本忽略MySQLdb的warnings
  8. elasticsearch常见属性单词解释
  9. js和php获取页面的url信息
  10. 大厂首发!java代码对齐快捷键