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 相关文章推荐
通过数据库向Django模型添加字段的示例
Jul 21 Python
ubuntu系统下 python链接mysql数据库的方法
Jan 09 Python
Python实现购物车程序
Apr 16 Python
在Python中输入一个以空格为间隔的数组方法
Nov 13 Python
python读取txt文件,去掉空格计算每行长度的方法
Dec 20 Python
详解字符串在Python内部是如何省内存的
Feb 03 Python
Python reshape的用法及多个二维数组合并为三维数组的实例
Feb 07 Python
TensorFlow 输出checkpoint 中的变量名与变量值方式
Feb 11 Python
浅谈django不使用restframework自定义接口与使用的区别
Jul 15 Python
Scrapy项目实战之爬取某社区用户详情
Sep 17 Python
Python爬虫之Selenium中frame/iframe表单嵌套页面
Dec 04 Python
详解Python遍历列表时删除元素的正确做法
Jan 07 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实现比较两个字符串日期大小的方法
2015/05/12 PHP
PHP递归算法的简单实例
2019/02/28 PHP
UserData用法总结 lanyu出品
2010/07/01 Javascript
js异常捕获方法介绍
2013/04/10 Javascript
简易js代码实现计算器操作
2013/04/15 Javascript
Javascript字符串对象的常用方法简明版
2014/06/26 Javascript
JavaScript对数组进行随机重排的方法
2015/07/22 Javascript
jQuery的选择器中的通配符[id^='code']或[name^='code']及jquery选择器总结
2015/12/24 Javascript
JavaScript截取、切割字符串的技巧
2016/01/07 Javascript
AngularJs  Understanding Angular Templates
2016/09/02 Javascript
Javascript this 函数深入详解
2016/12/13 Javascript
微信小程序 自动登陆PHP源码实例(源码下载)
2017/05/08 Javascript
使用vue制作滑动标签
2019/09/21 Javascript
vue实现在v-html的html字符串中绑定事件
2019/10/28 Javascript
[01:16:37]【全国守擂赛】第三周决赛 Dark Knight vs. 一个弱队
2020/05/04 DOTA
在Python中使用CasperJS获取JS渲染生成的HTML内容的教程
2015/04/09 Python
使用Python3编写抓取网页和只抓网页图片的脚本
2015/08/20 Python
Python实现KNN邻近算法
2021/01/28 Python
在cmd命令行里进入和退出Python程序的方法
2018/05/12 Python
python制作简单五子棋游戏
2019/06/18 Python
Python实现word2Vec model过程解析
2019/12/16 Python
python实现对变位词的判断方法
2020/04/05 Python
CSS3中border-radius属性设定圆角的使用技巧
2016/05/10 HTML / CSS
德国古洛迷亚百货官网:GALERIA Kaufhof
2017/06/20 全球购物
AJAX都有哪些有点和缺点
2012/11/03 面试题
班组拓展活动方案
2014/08/14 职场文书
乡镇遵守党的政治纪律情况对照检查材料
2014/09/26 职场文书
村主任群众路线教育实践活动个人对照检查材料思想汇报
2014/10/01 职场文书
2015年度员工自我评价范文
2015/03/11 职场文书
质检员工作总结2015
2015/04/25 职场文书
2016年春季运动会加油稿
2015/07/22 职场文书
2015年高三毕业班班主任工作总结
2015/10/22 职场文书
小组口号霸气押韵
2015/12/24 职场文书
HTML+JS实现在线朗读器
2022/02/15 Javascript
Python matplotlib可视化之绘制韦恩图
2022/02/24 Python
winserver2019安装软件一直卡在应用程序正在为首次使用做准备
2022/06/10 Servers