python+Selenium自动化测试——输入,点击操作


Posted in Python onMarch 06, 2020

这是我的第一个真正意思上的自动化脚本。

1、练习的测试用例为:

打开百度首页,搜索“胡歌”,然后检索列表,有无“胡歌的新浪微博”这个链接 2、在写脚本之前,需要明确测试的步骤,具体到每个步骤需要做什么,既拆分测试场景,考虑好之后,再去写脚本。

此测试场景拆分如下:

1)启动Chrome浏览器

2)打开百度首页,https://www.baidu.com

3)定位搜索输入框,输入框元素XPath表达式://*[@id=”kw”]

4)定位搜索提交按钮(百度一下)://*[@id=”su”]

5)在搜索框输入“胡歌”,点击百度一下按钮

6)在搜索结果列表判断是否存在“胡歌的新浪微博”这个链接

7)退出浏览器,结束测试

【注】chrome获取XPath路径步骤如下:

1)在你打开的网页(如:百度首页),按F12,弹出如下窗口

python+Selenium自动化测试——输入,点击操作

2)点击左上角箭头按钮(或Ctrl + Shift + C),此时可以在页面上移动光标,查看对应的代码,如移动到百度搜索框,显示如下:

python+Selenium自动化测试——输入,点击操作

点击一下,对应代码就会选中

python+Selenium自动化测试——输入,点击操作

然后,右击copy?>copy path 复制到XPath路径。

3、代码如下:

import time
from selenium import webdriver

'''
测试用例:打开百度首页,搜索“胡歌”,然后检索列表,有无“胡歌的新浪微博”这个链接
场景拆分:
 1)启动Chrome浏览器
 2) 打开百度首页,https://www.baidu.com
 3)定位搜索输入框,输入框元素XPath表达式://*[@id="kw"]
 4)定位搜索提交按钮(百度一下)://*[@id="su"]
 5)在搜索框输入“胡歌”,点击百度一下按钮
 6)在搜索结果列表判断是否存在“胡歌的新浪微博”这个链接
 7)退出浏览器,结束测试
'''
driver = webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(8) # 设置隐式等待时间

driver.get("https://www.baidu.com") # 地址栏里输入网址
driver.find_element_by_xpath('//*[@id="kw"]').send_keys("胡歌") # 搜索框输入胡歌
driver.find_element_by_xpath('//*[@id="su"]').click() # 点击百度一下按钮

time.sleep(2) # 等待2秒
# 通过元素XPath来确定该元素是否显示在结果列表,从而判断“壁纸”这个链接是否显示在结果列表
# find_element_by_link_text当找不到此链接时报错,程序停止
driver.find_element_by_link_text('胡歌的新浪微博').is_displayed()
driver.quit()

补充知识:python + selenium自动化测试--页面操作

1、刷新当前页面

.refresh()

# 刷新当前页面
driver.refresh()

2、获取本页面的URL

.current_url

用处:

一般URL可以帮助我们判断跳转的页面是否正确,或者URL中部分字段可以作为我们自动化测试脚本期待结果的一部分。

print(driver.current_url)

3、页面标题

获取当前页面标题

.title

# 获取当前页面标题显示的字段
print(driver.title)

断言页面标题

# 1) 包含判断
# assert:断言,声称
try:
 assert "百度一下" in driver.title
 print("断言测试成功.")
except Exception as e:
 print("断言失败.",format(e))

# 2) 完全相等判断
if "百度一下,你就知道" == driver.title:
 print("成功.")
else:
 print("失败.")

print(driver.title)

4、新建标签页

用js实现如下:

try:
 # 新标签页,此处用js实现,在有些博客上显示使用
 # driver.find_element_by_tag_name('body').send_keys(Keys.CONTROL, 't')
 # 我这测试无效,原因不知,于是采用如下方法
 js = "window.open('http://www.acfun.cn/')"
 driver.execute_script(js)

 # 切换到新的窗口
 handles = driver.window_handles # 获取窗口句柄
 driver.switch_to.window(handles[-1]) # 切换到最后一个既最新打开的窗口

 # 先切换窗口再打开新网址,才是在新窗口打开网址,不然还是在原来的百度页面打开此网址
 driver.get('http://map.baidu.com/')

except Exception as e:
 print("发现异常,",format(e))

5、页面前进、后退

前进: .forward()

后退: .back()

driver.get("https://www.baidu.com")
time.sleep(2)
'''前进,后退'''
elem_news = driver.find_element_by_link_text("新闻").click() # 点击进入新闻
time.sleep(2)
driver.back() # 后退到百度首页
time.sleep(2)
driver.forward() # 从百度前进到新闻页
time.sleep(2)

6、获取浏览器版本号

.capabilities[‘version']

# 获取浏览器版本号
"""
 Creates a new session with the desired capabilities.

 :Args:
 - browser_name - The name of the browser to request.
 - version - Which browser version to request.
 - platform - Which platform to request the browser on.
 - javascript_enabled - Whether the new session should support JavaScript.
 - browser_profile - A selenium.webdriver.firefox.firefox_profile.FirefoxProfile object. Only used if Firefox is requested.
"""
print(driver.capabilities['version'])

以上这篇python+Selenium自动化测试——输入,点击操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python urlopen()函数 示例分享
Jun 12 Python
python 捕获shell脚本的输出结果实例
Jan 04 Python
python中多层嵌套列表的拆分方法
Jul 02 Python
python3使用pandas获取股票数据的方法
Dec 22 Python
Python同步遍历多个列表的示例
Feb 19 Python
pandas按行按列遍历Dataframe的几种方式
Oct 23 Python
python matplotlib实现将图例放在图外
Apr 17 Python
numpy库reshape用法详解
Apr 19 Python
使用pth文件添加Python环境变量方式
May 26 Python
keras读取h5文件load_weights、load代码操作
Jun 12 Python
基于Pytorch版yolov5的滑块验证码破解思路详解
Feb 25 Python
pytorch中的torch.nn.Conv2d()函数图文详解
Feb 28 Python
使用 Python ssh 远程登陆服务器的最佳方案
Mar 06 #Python
使用python执行shell脚本 并动态传参 及subprocess的使用详解
Mar 06 #Python
python解析xml文件方式(解析、更新、写入)
Mar 05 #Python
如何使用pandas读取txt文件中指定的列(有无标题)
Mar 05 #Python
python批量替换文件名中的共同字符实例
Mar 05 #Python
python批量修改xml属性的实现方式
Mar 05 #Python
python修改linux中文件(文件夹)的权限属性操作
Mar 05 #Python
You might like
wamp下修改mysql访问密码的解决方法
2013/05/07 PHP
php将mysql数据库整库导出生成sql文件的具体实现
2014/01/08 PHP
php生成html文件方法总结
2014/12/01 PHP
php 参数过滤、数据过滤详解
2015/10/26 PHP
PHP统计目录中文件以及目录中目录大小的方法
2016/01/09 PHP
PHP访问数据库集群的方法小结
2016/03/14 PHP
phplist及phpmailer(组合使用)通过gmail发送邮件的配置方法
2016/03/30 PHP
php+mysql查询实现无限下级分类树输出示例
2016/10/03 PHP
Json_decode 解析json字符串为NULL的解决方法(必看)
2017/02/17 PHP
Thinkphp3.2简单解决多文件上传只上传一张的问题
2017/09/26 PHP
php7 参数、整形及字符串处理机制修改实例分析
2020/05/25 PHP
基于jquery实现的一个选择中国大学的弹框 (数据、步骤、代码)
2012/07/26 Javascript
js实现禁止中文输入的方法
2015/01/14 Javascript
Windows系统下Node.js的简单入门教程
2015/06/23 Javascript
javascript获取wx.config内部字段解决微信分享
2016/03/09 Javascript
Node.js刷新session过期时间的实现方法推荐
2016/05/18 Javascript
jquery ajax结合thinkphp的getjson实现跨域的方法
2016/06/06 Javascript
JS获取鼠标相对位置的方法
2016/09/20 Javascript
nodejs后台集成ueditor富文本编辑器的实例
2017/07/11 NodeJs
JavaScript碎片—函数闭包(模拟面向对象)
2019/03/13 Javascript
微信小程序可滑动月日历组件使用详解
2019/10/21 Javascript
JavaScript如何借用构造函数继承
2019/11/06 Javascript
Node.js创建一个Express服务的方法详解
2020/01/06 Javascript
[49:35]KG vs SECRET 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/19 DOTA
Python实现子类调用父类的方法
2014/11/10 Python
Python unittest装饰器实现原理及代码
2020/09/08 Python
纯CSS实现设置半个字符的样式
2014/07/03 HTML / CSS
幼师专业毕业生自荐信
2013/09/29 职场文书
白酒业务员岗位职责
2013/12/27 职场文书
消防安全管理制度
2014/02/01 职场文书
企业安全生产责任书
2014/04/14 职场文书
企业管理标语
2014/06/10 职场文书
个人授权委托书样本
2014/09/13 职场文书
夫妻吵架保证书
2015/05/08 职场文书
给女朋友的道歉短信
2015/05/12 职场文书
mysql5.5中文乱码问题解决的有用方法
2022/05/30 MySQL