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的源码浅要剖析Python的内存管理
Apr 16 Python
Python查询IP地址归属完整代码
Jun 21 Python
Python中的defaultdict与__missing__()使用介绍
Feb 03 Python
利用python实现微信头像加红色数字功能
Mar 26 Python
对python中两种列表元素去重函数性能的比较方法
Jun 29 Python
Django中的Model操作表的实现
Jul 24 Python
python调用外部程序的实操步骤
Mar 04 Python
Python对Excel按列值筛选并拆分表格到多个文件的代码
Nov 05 Python
Python谱减法语音降噪实例
Dec 18 Python
python利用opencv实现SIFT特征提取与匹配
Mar 05 Python
用Python实现Newton插值法
Apr 17 Python
详解Python+OpenCV绘制灰度直方图
Mar 22 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
PHP中比较时间大小实例
2014/08/21 PHP
php带抄送和密件抄送的邮件发送方法
2015/03/20 PHP
Yii使用Captcha验证码的方法
2015/12/28 PHP
PHP生成随机码的思路与方法实例探索
2019/04/11 PHP
Save a File Using a File Save Dialog Box
2007/06/18 Javascript
JavaScript中Math对象使用说明
2008/01/16 Javascript
aspx中利用js实现确认删除代码
2010/07/22 Javascript
jQuery ajax serialize()方法的使用以及常见问题解决
2013/01/27 Javascript
javascript使用call调用微信API
2014/12/15 Javascript
jQuery对JSON数据进行排序输出的方法
2015/06/24 Javascript
javascript冒泡排序小结
2016/04/10 Javascript
简单的JS轮播图代码
2016/07/18 Javascript
基于JS实现类似支付宝支付密码输入框
2016/09/02 Javascript
各式各样的导航条效果css3结合jquery代码实现
2016/09/17 Javascript
vue.js框架实现表单排序和分页效果
2017/08/09 Javascript
JS简单生成由字母数字组合随机字符串示例
2018/05/25 Javascript
微信小程序之事件交互操作实例分析
2018/12/03 Javascript
react-router4按需加载(踩坑填坑)
2019/01/06 Javascript
Windows下Node爬虫神器Puppeteer安装记
2019/01/09 Javascript
微信小程序vant弹窗组件的实现方式
2020/02/21 Javascript
vue实现自定义多选按钮
2020/07/16 Javascript
Vue使用路由钩子拦截器beforeEach和afterEach监听路由
2020/11/16 Javascript
[01:42:49]DOTA2-DPC中国联赛 正赛 iG vs PSG.LGD BO3 第一场 2月26日
2021/03/11 DOTA
获取python文件扩展名和文件名方法
2018/02/02 Python
Python3使用pandas模块读写excel操作示例
2018/07/03 Python
Python常用数据类型之间的转换总结
2019/09/06 Python
Python3开发环境搭建详细教程
2020/06/18 Python
CSS3实现任意图片lowpoly动画效果实例
2017/05/11 HTML / CSS
结合 CSS3 transition transform 实现简单的跑马灯效果的示例
2018/02/07 HTML / CSS
HTML5的Geolocation地理位置定位API使用教程
2016/05/12 HTML / CSS
美国在线乐器和设备商店:Musician’s Friend
2018/07/06 全球购物
Expedia法国:全球最大在线旅游公司
2018/09/30 全球购物
力学专业毕业生自荐信
2013/11/17 职场文书
秋季运动会广播稿
2014/02/22 职场文书
感恩教师节主题班会
2015/08/12 职场文书
教你使用vscode 搭建react-native开发环境
2021/07/07 Javascript