目录
selenium自动化测试笔记
selenium可以实现web功能的自动化测试,本文主要介绍通过selenium实现UI自动化测试(脚本程序会打开浏览器自动完成一系列网站的点击滑动操作)
主要参考博客
selenium IDE安装和使用参考软件测试教程 自动化测试selenium篇(一) - 简书 (jianshu.com)
界面元素定位方法参考chrome浏览器f12快速定位元素的技巧lovingsoft的博客-CSDN博客浏览器f12定位元素
1、使用selenium IDE录制脚本
selenium最简单的使用方式就是selenium IDE录制脚本,selenium IDE是大部分浏览器拓展商店都能找到的浏览器插件,通过该插件我们可以在需要执行自动化测试的脚本上进行一系列操作,该插件能够自动记录这些操作,并根据记录结果生成脚本,可以生成python、JS、JAVA等语言的脚本程序
2、selenium IDE简单使用教程
1.新建项目进行网页操作自动记录
2.操作完成后IDE根据记录下的网页操作自动生成测试用例
3.对生成测试用例进行测试、编辑修改
IDE生成的测试用例直接运行一般会有BUG,我们需要根据测试运行效果对用例进行更改,定位BUG方法、修改操作命令方法如下
记录完成后运行测试用例以及对测试用例打断点见操作1、2
根据测试用例运行效果对测试用例进行插入、修改间操作3、4、5
4.导出测试用例为代码脚本
5.运行代码脚本(以python脚本为例)
1.安装python
2.安装selenium
C:\Python27\Scripts > pip install -U selenium
3.安装chromedriver
下载网址:ChromeDriver - WebDriver for Chrome - Downloads (google.com) 下载之后将chromedriver.exe放到一个目录下,可以放到chrome.exe一个目录下了,
C:Program Files (x86)\Google\Chrome\Application
一定记得将chromedriver.exe所在目录添加到path环境变量中
完成后在cmd窗口输入以下指令,弹出浏览器即为配置成功
C:\Users\l50021866>python
Python 3.8.8 (tags/v3.8.8:024d805, Feb 19 2021, 13:18:16) [MSC v.1928 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from selenium import webdriver
>>> browser = webdriver.Chrome()
4.给生成的脚本添加运行代码
selenium IDE自动生成的python脚本是一个测试类,该类包含了初始化函数和测试代码函数
为了运行该测试类需要加几行运行代码,以IDE生成的测试类名为Test,测试方法名为testFunction为例,需要添加的代码如下
# 初始化测试类
test = Test()
# 运行测试类的初始化方法
test.setup_method(test.testFunction)
# 运行测试类的自动化测试函数
test.testFunction()
添加完成后即可直接运行该python脚本进行自动化测试
3.准确定位界面元素方法
selenium自动定位的界面元素通常会有偏差,需要我们手动进行纠正,前端界面元素的定位方法主要如下:
1.选择需要定位的元素
打开F12控制台,按ctrl+shift+c快捷键选择需要定位的元素
2.获取元素定位方法
选择元素后右边控制台会自动跳到选择元素所在的标签,我们从该标签获取元素定位方法,可以通过XPath或CSS或selector等方法定位
3.通过浏览器控制台进行调试元素
上图以复制XPath为例,获取到元素的XPath后,可根据$x()获取元素,以获取到的XPath为//*[@id="csdn-toolbar"]/div/div/div[1]/ul/li[6]/a为例,我们通过如下代码在控制台获取XPath并触发元素的点击事件
$x('//*[@id="csdn-toolbar"]/div/div/div[1]/ul/li[6]/a')[0].Click()
如能该按钮的事件,则说明//*[@id="csdn-toolbar"]/div/div/div[1]/ul/li[6]/a即为需要定位元素的XPath
在控制台通过$获取元素的方法如下:
$() 返回与指定的CSS选择器相匹配的第一个元素,等同于document.querySelector()
$$() 返回与指定的CSS选择器相匹配的所有元素的数组,等同于document.querySelectorAll()
$x() 返回与指定的XPath相匹配的所有元素的数组
4.修改selenium IDE生成测试用例中的操作
1.修改元素定位方式
选择某个操作后可以在下方菜单栏中修改定位方式,通过CSS定位或Xpath定位,以及定位路径
2.插入其他指令
选择插入指令后可以看到有许多指令选项,如等待某个元素加载出现后再执行下一步
5.修改selenium IDE生成的脚本
selenium主要是获取界面元素后对界面元素进行操作,要修改脚本我们重点要知道selenium提供了哪些对界面元素进行操作的API,官方关于webelement的API文档见selenium.webdriver.remote.webelement — Selenium 4.1.0 documentation
6.selenium IDE录制脚本常见问题
问题1.录制完成后运行时报错找不到元素
问题出现原因:通常为IDE自动定位的元素定位方式不准确eqw
解决方法:在IDE中手动纠正定位方式,IDE默认使用CSS方式定位,改为XPATH定位方式通常可以解决,手动获取需要定位界面元素的XPATH地址的方法见”准确定位界面元素方法“,在IDE内修改元素定位方式的方法见“对生成测试用例进行测试、编辑修改“
一个使用xpath定位地址进行定位的例子如下,xpath定位路径为//*[@id="login"]/div[6]/button
问题2.页面加载未完成时脚本提前点击元素导致点击没反应
问题出现原因: 通常为脚本的执行速度与页面加载速度不一致,页面响应慢而脚本执行快,导致页面的元素响应跟不上脚本的执行速度。而部分操作往往需要等上一步的操作响应完成后再执行,比如点击了搜索按钮,需要等搜索结果出现之后再去点击。
解决方法有两个,保险起见可以两个解决方法结合一起用
解决方法1:添加等待指令
添加指令的方法见“对生成测试用例进行测试、编辑修改“,其中等待操作有多种,具体见下图:
较常用的主要有如下几个:
wait for element present,等待元素出现后再执行下一步,可以设置需要等待的元素以及等待时间
wait for text,等待元素出现指定文本后再执行下一步,可以设置要查询的元素,需要等待的文字
wait for element not present,等待元素消失后再执行下一步,可以设置需要等待的元素以及等待时间
两个具体的添加等待元素例子如下:
1.等待界面元素css=.card-title的文字变为“ 阿帕WMS仓储管理解决方案”
2.等待界面元素css=.card-imd出现,等待时间为5000毫秒(5秒)
解决方法2:在脚本中添加等待页面加载完成代码
在生成的python脚本中,在操作开始执行前添加代码driver.implicitly_wait(10),表示后续所有基于driver的操作都会等待页面加载完成后再进行操作,等待时间上限为10秒。