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科学计算环境推荐——Anaconda
Jun 30 Python
python基于windows平台锁定键盘输入的方法
Mar 05 Python
python使用paramiko实现远程拷贝文件的方法
Apr 18 Python
Python表示矩阵的方法分析
May 26 Python
在python中pandas的series合并方法
Nov 12 Python
使用python获取(宜宾市地震信息)地震信息
Jun 20 Python
解决windows上安装tensorflow时报错,“DLL load failed: 找不到指定的模块”的问题
May 20 Python
keras 读取多标签图像数据方式
Jun 12 Python
简单的命令查看安装的python版本号
Aug 28 Python
python中watchdog文件监控与检测上传功能
Oct 30 Python
pandas取dataframe特定行列的实现方法
May 24 Python
浅谈Python从全局与局部变量到装饰器的相关知识
Jun 21 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学习笔记 IIS7下安装配置php环境
2012/10/29 PHP
PHP使Laravel为JSON REST API返回自定义错误的问题
2018/10/16 PHP
Yii2.0建立公共方法简单示例
2019/01/29 PHP
JavaScript实现控制打开文件另存为对话框的方法
2015/04/17 Javascript
jQuery实现单击弹出Div层窗口效果(可关闭可拖动)
2015/09/19 Javascript
谈一谈bootstrap响应式布局
2016/05/23 Javascript
Javascript中引用类型传递的知识点小结
2017/03/06 Javascript
JavaScript关联数组用法分析【概念、定义、遍历】
2017/03/15 Javascript
Vue项目中引入外部文件的方法(css、js、less)
2017/07/24 Javascript
jQuery实现的监听导航滚动置顶状态功能示例
2018/07/23 jQuery
详解JavaScript中的坐标和距离
2019/05/27 Javascript
微信小程序引入VANT组件的方法步骤
2019/09/19 Javascript
python实现数值积分的Simpson方法实例分析
2015/06/05 Python
Python遍历文件夹和读写文件的实现代码
2016/08/28 Python
python 寻找优化使成本函数最小的最优解的方法
2017/12/28 Python
python书籍信息爬虫实例
2018/03/19 Python
Flask使用Pyecharts在单个页面展示多个图表的方法
2019/08/05 Python
python中enumerate() 与zip()函数的使用比较实例分析
2019/09/03 Python
Python 面向对象部分知识点小结
2020/03/09 Python
学习Python需要哪些工具
2020/09/04 Python
Python pymysql模块安装并操作过程解析
2020/10/13 Python
纯CSS3实现的井字棋游戏
2020/11/25 HTML / CSS
JAKO-O德国野酷台湾站:德国首屈一指的婴幼童用品品牌
2019/01/14 全球购物
美国孕妇装购物网站:Motherhood Maternity
2019/09/22 全球购物
奥地利领先的在线药房:SHOP APOTHEKE
2019/10/07 全球购物
有机婴儿毛毯和衣服:Monica + Andy
2020/03/01 全球购物
退休感言
2014/01/28 职场文书
公司中层干部的自我评价分享
2014/03/01 职场文书
会计岗位职责模板
2014/03/12 职场文书
潘婷洗发水广告词
2014/03/14 职场文书
读书小明星事迹材料
2014/05/03 职场文书
夫妻房产协议书的格式
2014/10/11 职场文书
2015应届毕业生求职信范文
2015/03/20 职场文书
简单且有用的Python数据分析和机器学习代码
2021/07/02 Python
JavaScript前端面试扁平数据转tree与tree数据扁平化
2022/06/14 Javascript
JS开发前端团队展示控制器来为成员引流
2022/08/14 Javascript