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之yield表达式学习
Sep 02 Python
Python网页解析利器BeautifulSoup安装使用介绍
Mar 17 Python
python实现给数组按片赋值的方法
Jul 28 Python
用Python的Flask框架结合MySQL写一个内存监控程序
Nov 07 Python
python生成器表达式和列表解析
Mar 10 Python
Python使用Turtle模块绘制五星红旗代码示例
Dec 11 Python
情人节快乐! python绘制漂亮玫瑰
Aug 18 Python
django 连接数据库 sqlite的例子
Aug 14 Python
利用python实现.dcm格式图像转为.jpg格式
Jan 13 Python
python实现五子棋游戏(pygame版)
Jan 19 Python
python基于scrapy爬取京东笔记本电脑数据并进行简单处理和分析
Apr 14 Python
Python中itertools库的四个函数介绍
Apr 06 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
我的论坛源代码(五)
2006/10/09 PHP
杏林同学录(二)
2006/10/09 PHP
php+mysql开源XNA 聚合程序发布 下载
2007/07/13 PHP
常用的php对象类型判断
2008/08/27 PHP
php下载excel无法打开的解决方法
2013/12/24 PHP
php数组函数array_walk用法示例
2016/05/26 PHP
VBScript版代码高亮
2006/06/26 Javascript
javascript Select标记中options操作方法集合
2008/10/22 Javascript
FLASH 广告之外的链接
2008/12/16 Javascript
JS代码判断IE6,IE7,IE8,IE9的函数代码
2013/08/02 Javascript
jQuery中关于ScrollableGridPlugin.js(固定表头)插件的使用逐步解析
2014/07/17 Javascript
javascript实现字符串反转的方法
2015/02/05 Javascript
JavaScript节点及列表操作实例小结
2015/08/05 Javascript
jQuery实现图片渐入渐出切换展示效果
2015/08/15 Javascript
javascript类型系统——undefined和null全面了解
2016/07/13 Javascript
Laydate时间组件在火狐浏览器下有多时间输入框时只能给第一个输入框赋值的解决方法
2016/08/18 Javascript
配置一个vue3.0项目的完整步骤
2019/04/26 Javascript
微信小程序 云开发模糊查询实现解析
2019/09/02 Javascript
vue中使用vue-print.js实现多页打印
2020/03/05 Javascript
Python中设置变量作为默认值时容易遇到的错误
2015/04/03 Python
Python实现对excel文件列表值进行统计的方法
2015/07/25 Python
python实现excel读写数据
2021/03/02 Python
Python3实现的爬虫爬取数据并存入mysql数据库操作示例
2018/06/06 Python
老生常谈python中的重载
2018/11/11 Python
python实现全盘扫描搜索功能的方法
2019/02/14 Python
Python+OpenCV实现旋转文本校正方式
2020/01/09 Python
new_zeros() pytorch版本的转换方式
2020/02/18 Python
css3 旋转按钮 使用CSS3创建一个旋转可变色按钮
2012/12/31 HTML / CSS
HTML5新增加的功能详解
2016/09/05 HTML / CSS
洲际酒店集团英国官网:IHG英国
2019/07/10 全球购物
董事长秘书岗位职责
2013/11/29 职场文书
2015年国税春训心得体会
2015/03/09 职场文书
酒店财务经理岗位职责
2015/04/08 职场文书
会计试用期工作总结2015
2015/05/28 职场文书
党员证明模板
2015/06/19 职场文书
vue2实现provide inject传递响应式
2021/05/21 Vue.js