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中的decode()方法的使用
May 18 Python
Python+MongoDB自增键值的简单实现
Nov 04 Python
python实现关键词提取的示例讲解
Apr 28 Python
Python3 批量扫描端口的例子
Jul 25 Python
Python中的wordcloud库安装问题及解决方法
May 27 Python
python安装后的目录在哪里
Jun 21 Python
pytorch VGG11识别cifar10数据集(训练+预测单张输入图片操作)
Jun 24 Python
python3获取控制台输入的数据的具体实例
Aug 16 Python
Jupyter Notebook安装及使用方法解析
Nov 12 Python
python pygame 愤怒的小鸟游戏示例代码
Feb 25 Python
django学习之ajax post传参的2种格式实例
May 14 Python
python读取并查看npz/npy文件数据以及数据显示方法
Apr 14 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+ajax新建流程(请假、进货、出货等)
2017/06/11 PHP
PHP registerXPathNamespace()函数讲解
2019/02/03 PHP
读jQuery之一(对象的组成)
2011/06/11 Javascript
JS隐藏参数post传值实例
2013/04/18 Javascript
jquery动态添加删除一行数据示例
2014/06/12 Javascript
js使用post 方式打开新窗口
2015/02/26 Javascript
JavaScript操作DOM元素的childNodes和children区别
2015/04/01 Javascript
Javascript 实现放大镜效果实例详解
2016/12/03 Javascript
Angular4 中内置指令的基本用法
2017/07/31 Javascript
Cpage.js给组件绑定事件的实现代码
2017/08/31 Javascript
javascript与PHP动态往类中添加方法对比
2018/03/21 Javascript
Vue实现导出excel表格功能
2018/03/30 Javascript
JQueryDOM之样式操作
2019/03/27 jQuery
利用H5api实现时钟的绘制(javascript)
2020/09/13 Javascript
浅谈Python类里的__init__方法函数,Python类的构造函数
2016/12/10 Python
python 计算两个日期相差多少个月实例代码
2017/05/24 Python
python对配置文件.ini进行增删改查操作的方法示例
2017/07/28 Python
快速了解Python开发中的cookie及简单代码示例
2018/01/17 Python
python range()函数取反序遍历sequence的方法
2018/06/25 Python
django和vue实现数据交互的方法
2019/08/21 Python
关于numpy.where()函数 返回值的解释
2019/12/06 Python
使用Python实现分别输出每个数组
2019/12/06 Python
python序列化与数据持久化实例详解
2019/12/20 Python
PyCharm无法识别PyQt5的2种解决方法,ModuleNotFoundError: No module named 'pyqt5'
2020/02/17 Python
Python requests接口测试实现代码
2020/09/08 Python
师范毕业生求职自荐信
2013/09/25 职场文书
家长给老师的道歉信
2014/01/13 职场文书
特色冷饮店创业计划书
2014/01/28 职场文书
党风廉政承诺书
2014/03/27 职场文书
《二泉映月》教学反思
2014/04/15 职场文书
纪检干部现实表现材料
2014/08/21 职场文书
2016高校自主招生自荐信范文
2016/01/28 职场文书
导游词之襄阳古城
2019/09/27 职场文书
经典人生语录分享:不畏将来,不念过去,笑对当下
2019/12/12 职场文书
详解用Python把PDF转为Word方法总结
2021/04/27 Python
利用 SQL Server 过滤索引提高查询语句的性能分析
2021/07/15 SQL Server