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中字典的基本知识初步介绍
May 21 Python
Python中最大最小赋值小技巧(分享)
Dec 23 Python
分析Python读取文件时的路径问题
Feb 11 Python
Python3.6简单反射操作示例
Jun 14 Python
Django框架多表查询实例分析
Jul 04 Python
Python读取csv文件分隔符设置方法
Jan 14 Python
一个可以套路别人的python小程序实例代码
Apr 09 Python
利用pyuic5将ui文件转换为py文件的方法
Jun 19 Python
浅谈python量化 双均线策略(金叉死叉)
Jun 03 Python
python的help函数如何使用
Jun 11 Python
python语言实现贪吃蛇游戏
Nov 13 Python
python可视化之颜色映射详解
Sep 15 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源码之将图片转化为data/base64数据流实例详解
2016/11/27 PHP
PHP正则之正向预查与反向预查讲解与实例
2020/04/06 PHP
php实现记事本案例
2020/10/20 PHP
Google Suggest ;-) 基于js的动态下拉菜单
2006/10/11 Javascript
兼容IE和Firefox的javascript获取iframe文档内容的函数
2011/08/15 Javascript
Js如何判断客户端是PC还是手持设备简单分析
2012/11/22 Javascript
关于在IE下的一个安全BUG --可用于跟踪用户的系统鼠标位置
2013/04/17 Javascript
JS实现Fisheye效果动感放大菜单代码
2015/10/21 Javascript
javascript 继承学习心得总结
2016/03/17 Javascript
JavaScript实现图片轮播组件代码示例
2016/11/22 Javascript
webpack入门+react环境配置
2017/02/08 Javascript
BootStrap注意事项小结(五)表单
2017/03/10 Javascript
bootstrap table单元格新增行并编辑
2017/05/19 Javascript
JS+WCF实现进度条实时监测数据加载量的方法详解
2017/12/19 Javascript
vue基础之事件简写、事件对象、冒泡、默认行为、键盘事件实例分析
2019/03/11 Javascript
vue中的过滤器实例代码详解
2019/06/06 Javascript
Vue两个版本的区别和使用方法(更深层次了解)
2020/02/16 Javascript
[03:14]DOTA2斧王 英雄基础教程
2013/11/26 DOTA
[00:32]2018DOTA2亚洲邀请赛Newbee出场
2018/04/03 DOTA
[52:20]VP vs VG Supermajor小组赛 B组胜者组决赛 BO3 第一场 6.2
2018/06/03 DOTA
[01:39:42]Fnatic vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
python2.7+selenium2实现淘宝滑块自动认证功能
2018/02/24 Python
win7+Python3.5下scrapy的安装方法
2018/07/31 Python
实例介绍Python中整型
2019/02/11 Python
利用Python pandas对Excel进行合并的方法示例
2020/11/04 Python
Python开发.exe小工具的详细步骤
2021/01/27 Python
浅析canvas元素的html尺寸和css尺寸对元素视觉的影响
2019/07/22 HTML / CSS
AmazeUI 网格的实现示例
2020/08/13 HTML / CSS
西班牙购买行李箱和背包网站:Maletas Greenwich
2019/10/08 全球购物
高级工程师岗位职责
2013/12/15 职场文书
护士毕业自我鉴定
2014/02/07 职场文书
乡镇干部十八大感言
2014/02/17 职场文书
python中的None与NULL用法说明
2021/05/25 Python
Mysql数据库命令大全
2021/05/26 MySQL
MySql开发之自动同步表结构
2021/05/28 MySQL
python中的sys模块和os模块
2022/03/20 Python