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生成随机密码
Mar 10 Python
详解python异步编程之asyncio(百万并发)
Jul 07 Python
浅析python3字符串格式化format()函数的简单用法
Dec 07 Python
在python中利用最小二乘拟合二次抛物线函数的方法
Dec 29 Python
python+selenium 定位到元素,无法点击的解决方法
Jan 30 Python
python tkinter实现界面切换的示例代码
Jun 14 Python
python实现超市商品销售管理系统
Nov 22 Python
.dcm格式文件软件读取及python处理详解
Jan 16 Python
python爬虫开发之Beautiful Soup模块从安装到详细使用方法与实例
Mar 09 Python
浅谈django channels 路由误导
May 28 Python
python如何查看安装了的模块
Jun 23 Python
opencv 图像腐蚀和图像膨胀的实现
Jul 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
苏联队长,苏联超人蝙蝠侠,这些登场的“山寨”英雄真的很严肃
2020/04/09 欧美动漫
PHP如何透过ODBC来存取数据库
2006/10/09 PHP
解析PHP提交后跳转
2013/06/23 PHP
PHP写日志的实现方法
2014/11/05 PHP
PHP+Ajax无刷新带进度条图片上传示例
2017/02/08 PHP
php redis setnx分布式锁简单原理解析
2020/10/23 PHP
cnblogs csdn 代码运行框实现代码
2009/11/02 Javascript
javascript sudoku 数独智力游戏生成代码
2010/03/27 Javascript
javascript动画之圆形运动,环绕鼠标运动作小球
2010/07/20 Javascript
js实现简单的购物车有图有代码
2014/05/26 Javascript
JavaScript将一个数组插入到另一个数组的方法
2015/03/19 Javascript
jquery插件unobtrusive实现片段式加载
2015/06/15 Javascript
用headjs来管理和加载js 提高网站加载速度
2016/11/29 Javascript
jQuery选择器之子元素过滤选择器
2017/09/28 jQuery
浅谈React深度编程之受控组件与非受控组件
2017/12/26 Javascript
JavaScript获取用户所在城市及地理位置
2018/04/21 Javascript
vue-cli3 karma单元测试的实现
2019/01/18 Javascript
Vue中实现权限控制的方法示例
2019/06/07 Javascript
简单了解Vue + ElementUI后台管理模板
2020/04/07 Javascript
在vue-cli3.0 中使用预处理器 (Sass/Less/Stylus) 配置全局变量操作
2020/08/10 Javascript
在Linux系统上安装Python的Scrapy框架的教程
2015/06/11 Python
如何分离django中的媒体、静态文件和网页
2019/11/12 Python
python函数enumerate,operator和Counter使用技巧实例小结
2020/02/22 Python
python修改linux中文件(文件夹)的权限属性操作
2020/03/05 Python
python 实现ping测试延迟的两种方法
2020/12/10 Python
AmazeUI的JS表单验证框架实战示例分享
2020/08/21 HTML / CSS
阿玛瑞酒店中文官方网站:Amari.com
2018/02/13 全球购物
颇特女士香港官网:NET-A-PORTER香港
2021/03/08 全球购物
编程用JAVA解析XML的方式
2013/07/07 面试题
数控技校生自我鉴定
2014/03/02 职场文书
井冈山红色之旅感想
2014/10/07 职场文书
2014年纪委工作总结
2014/12/05 职场文书
三好学生评语大全
2014/12/29 职场文书
理想国读书笔记
2015/06/25 职场文书
财务管理制度范本
2015/08/04 职场文书
2016入党积极分子党课培训心得体会
2016/01/06 职场文书