python+Selenium自动化测试——输入,点击操作
作者:_Alice 发布时间:2023-08-09 07:20:50
这是我的第一个真正意思上的自动化脚本。
1、练习的测试用例为:
打开百度首页,搜索“胡歌”,然后检索列表,有无“胡歌的新浪微博”这个链接 2、在写脚本之前,需要明确测试的步骤,具体到每个步骤需要做什么,既拆分测试场景,考虑好之后,再去写脚本。
此测试场景拆分如下:
1)启动Chrome浏览器
2)打开百度首页,https://www.baidu.com
3)定位搜索输入框,输入框元素XPath表达式://*[@id=”kw”]
4)定位搜索提交按钮(百度一下)://*[@id=”su”]
5)在搜索框输入“胡歌”,点击百度一下按钮
6)在搜索结果列表判断是否存在“胡歌的新浪微博”这个链接
7)退出浏览器,结束测试
【注】chrome获取XPath路径步骤如下:
1)在你打开的网页(如:百度首页),按F12,弹出如下窗口
2)点击左上角箭头按钮(或Ctrl + Shift + C),此时可以在页面上移动光标,查看对应的代码,如移动到百度搜索框,显示如下:
点击一下,对应代码就会选中
然后,右击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'])
来源:https://blog.csdn.net/BEEKSTAR/article/details/78870736
猜你喜欢
- 但凡设计师都对简洁的设计情有独钟,我们不喜欢复杂,却也不能不会rich。先来看下“rich”在字典里的意思:(1) having an ab
- JavaScript图片水平翻转后垂直翻反转的特效一:<!--把下列代码加到body区域内--><SCRIPT langu
- 我很想自己写一个这样的程序,不过wordpress是php的,我blog是ASP的,只好用ASP写代码了。经过一番折腾测试,终于让我的梦想变
- 代码如下: function astro(birth) astro="" if birth=""
- 昨天给公司服务器重做了一下系统,遇到Asp附件无法上传,之前服务器上使用好好的,怎么重做了就不正常了,于是一番google,baidu,下面
- 听说 FaceBook 开放其网站的代码了,期前也算是了解过 FaceBook 的架构,所以重点就是看其代码的质量。可以毫不夸张的说,Fac
- 在Web上使用菜单可以极大地节约页面的空间,同时也比较的符合用户从Windows上继承下来的UI操作体验。在以往的Web页菜单设计中,我们普
- function createobj() { if (window.ActiveXObject)&n
- <?php/*======================================事务处理==================
- 最近决定把MT的后台数据从Berkeley的文件DB转到MySQL。原因之一是使用关系数据库可以获得更多的灵活性,比如运行一条sql来变更
- 问题:因为有的友情连接的网站关闭或者网络连接较慢导致连接的LOGO图片显示不出来或者显示很慢.在IE下面老是提示剩下几项没打开,看起来很不舒
- 1、用户有三种:活跃用户、沉睡用户、外部用户。2、据不完全统计,外部用户8亿,沉睡用户1.2亿,活跃用户1千万。3、就算不去管活跃用户,或者
- 搞前端应该对语义化并不陌生,每天都在说语义化,可什么是语义化,语义化究竟能给我们带来什么好处?参加web标准交流会的时候我向各位同学提出了我
- 软件环境: 1、操作系统:Windows 2000 Server 2、数 据 库:Oracle 8i R2 (8.1.7) for NT 企
- BluePrint是一个非常成熟也非常流行的CSS框架,很多网站和wordpress基于Blueprint搭建前端结构。最近,bluepri
- ASP.net处理文件上传就简单的多了,我呢也是在学习中,顺便写写学习笔记。 先在表单中添加enctype="multipart/
- 方法一: 代码如下:id=request.form("checkbox") id=Split(id,"
- 新一代W3C,xhtml代码规范,大家在设计网站的时候务必遵循这一规范 ,这将对网站的优化,网站的推广,搜索引擎的友好
- 您可以使用 ObjectContext 对象提交或放弃一项由 Microsoft Transaction Server (MTS) 管理的事
- 安装 SQL2000 时,系统经常会提示:操作被挂起,要求重新启动计算机,如图1: 图1重新启动后,再次安装时问题仍然存在。解决办