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数据结构之二叉树的统计与转换实例
Apr 29 Python
python动态参数用法实例分析
May 25 Python
Python使用time模块实现指定时间触发器示例
May 18 Python
python中numpy.zeros(np.zeros)的使用方法
Nov 07 Python
pycharm修改file type方式
Nov 19 Python
关于Pytorch的MLP模块实现方式
Jan 07 Python
Pycharm配置PyQt5环境的教程
Apr 02 Python
通过Python实现一个简单的html页面
May 16 Python
Python在centos7.6上安装python3.9的详细教程(默认python版本为2.7.5)
Oct 15 Python
Python WebSocket长连接心跳与短连接的示例
Nov 24 Python
python实现简单猜单词游戏
Dec 24 Python
python如何查找列表中元素的位置
May 30 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中数组合并的两种方法及区别介绍
2012/09/14 PHP
域名和cookie问题(域名后缀)
2012/10/10 PHP
ThinkPHP验证码和分页实例教程
2014/08/22 PHP
在Windows XP下安装Apache+MySQL+PHP环境
2015/02/22 PHP
解决PHP里大量数据循环时内存耗尽的方法
2015/10/10 PHP
分享PHP守护进程类
2015/12/30 PHP
PHP使用SOAP扩展实现WebService的方法
2016/04/01 PHP
PHP获取HTTP body内容的方法
2018/12/31 PHP
分享几种好用的PHP自定义加密函数(可逆/不可逆)
2020/09/15 PHP
小议Function.apply() 之一------(函数的劫持与对象的复制)
2006/11/30 Javascript
JS控制显示隐藏兼容问题(IE6、IE7、IE8)
2010/04/01 Javascript
GreyBox技术总结(转)
2010/11/23 Javascript
AngularJS基础 ng-include 指令简单示例
2016/08/01 Javascript
基于vue.js实现的分页
2018/03/13 Javascript
详解js类型判断
2018/05/22 Javascript
VUE+elementui面包屑实现动态路由详解
2019/11/04 Javascript
对vuex中getters计算过滤操作详解
2019/11/06 Javascript
vue3为什么要用proxy替代defineProperty
2020/10/19 Javascript
[08:04]TI4西雅图DOTA2前线报道 海涛探访各路人马
2014/07/09 DOTA
Python和Go语言的区别总结
2019/02/20 Python
Python3.5实现的罗马数字转换成整数功能示例
2019/02/25 Python
django query模块
2019/04/20 Python
基于python实现图片转字符画代码实例
2020/09/04 Python
基于Django快速集成Echarts代码示例
2020/12/01 Python
加拿大女包品牌:Matt & Nat
2017/05/12 全球购物
什么是java序列化,如何实现java序列化
2012/11/14 面试题
平民服装店创业计划书
2014/01/17 职场文书
2014年道德讲堂实施方案
2014/03/05 职场文书
社区网格化管理实施方案
2014/03/21 职场文书
园林设计专业毕业生求职信
2014/03/23 职场文书
行政专员岗位职责说明书
2014/09/01 职场文书
学校师德师风自我剖析材料
2014/09/29 职场文书
幼儿园大班教师随笔
2015/08/14 职场文书
关于战胜挫折的名言警句大全!
2019/07/05 职场文书
Win11如何默认打开软件界面最大化?Win11默认打开软件界面最大化的方法
2022/07/15 数码科技
Go语言编译原理之变量捕获
2022/08/05 Golang