09airtest-selenium:web自动化测试实战
同学们好,我是网易AirtestProject的团队成员晓娟,欢迎大家来到我们的视频教程专栏《14天Airtest自动化测试小白课程》。
很多同学都知道,我们这个AirtestProject项目包含airtest和poco两个测试框架,其实我们这个项目还有另外一个测试框架,叫airtest-selenium,是对selenium的python库做的一层封装,它主要用来对浏览器进行自动化测试,包含以下几个方面的改动:
添加了部分图象识别的接口
封装了一些多标签页切换的接口
运行时自动记录核心api的log内容,可生成网页版的测试报告
那么今天我们就来学习下,如何使用这个封装好的airtest-selenium,在浏览器上进行自动化测试。
airtest-selenium辅助窗功能
默认情况下,IDE的selenium Window是没有展示出来的,我们可以在IDE的顶部菜单--窗口处,勾选上selenium Window,此时在poco的辅助窗下面,就会出现airtest-selenium的辅助窗了:

另外,在使用IDE进行浏览器的自动化之前,需要在选项--设置中,把chrome path填上,否则在使用打开浏览器的功能按钮时,会出现弹窗,提示请设置chrome path:


设置好chrome path以后,我们就可以用快捷按钮打开我们的浏览器来进行元素检索和录制脚本了。
点击辅助窗的打开浏览器的按钮,可以看到我们打开了刚才设置好的chrome浏览器,并且在脚本编辑窗的上面,会出现了一条亮黄色的提示,让我们选择是否插入初始化脚本,点击yes,脚本编辑窗就会被自动插入打开浏览器的初始化语句:

初始化语句中包含了一些必要的引入,创建了1个chrome实例,并且设置隐式等待时间为20s。
接下来我们看看元素检索和定位的功能按钮,单击元素定位按钮,再把鼠标移动到浏览器的元素上,会出现1个蓝色的半透明框框选住对应的元素,此时我们单击鼠标左键,即可在脚本编辑窗中插入该元素的定位脚本,自动生成的定位脚本所用的定位方法都是find_element_by_xpath():

再来看看录制功能,这个录制功能跟airtest和poco的录制功能有点类似,都是随着我们在待测设备上进行一些操作,然后自动帮我们生成对应的操作脚本:

可以看到,随着鼠标在浏览器上进行一系列的操作,脚本编辑窗也出现了对应的自动化脚本,比较特别的是,当我们点击某个元素,会触发打开1个新标签页的动作时,脚本也会自动帮我们录制切换标签页的语句。
辅助窗的常用api介绍
辅助窗给我们提供了11个常用api的功能按钮,我们分别来看一下:

元素定位和实操
借助selenium Window这个辅助窗,我们已经可以非常容易地完成大部分的web自动化脚本。但是在面对更多复杂的测试需求和操作时,我们还是要拥有一定的自己编写脚本的能力。
在web自动化中,最核心也最基础的事情就是进行元素定位,那么除了借助辅助窗帮我们生成定位脚本之外,怎么自己编写各种元素的定位脚本呢?
先来学习1个简单的小技能,在浏览器上审查元素:在网页的空白处,单击右键,选择检查,在弹出的检视窗口中,单击检视元素的按钮,然后把鼠标移动到待检视的元素上,就会自动帮我们在源代码中定位到该元素,方便我们查看元素的相应属性:

并且,此时右键点击高亮的元素源代码,可以复制该元素的xpath属性,用于元素定位,刚才我们在IDE录制的元素定位脚本,都是根据元素的xpath属性来定位的。除了这个以外,我们还可以利用元素的name、id、class name等属性来进行元素定位:
find_element_by_id()
find_element_by_name()
find_element_by_class_name()
find_element_by_xpath()
find_element_by_link_text()
find_element_by_partial_link_text()
find_element_by_css_selector()
写好元素定位之后,我们就可以对该元素进行点击操作、发送关键词和断言该元素是否存在等等:
# 元素点击
driver.find_element_by_xpath("//*[@id=\"right_content\"]/div/div/div/div[2]/div/a[4]").click()
# 输入
driver.find_element_by_id("title").send_keys("123")
# 断言元素存在
driver.assert_exist("//div[@alt='到学术首页']", "xpath", "请填写测试点.")
除了这些常见的元素定位以外,我们还有可能遇到稍微特别一点的元素定位,比如下拉框定位、弹窗定位等等。
下拉框定位我们会用到select类,定位的基本步骤为:
①定位到下拉框这个元素
②实例化Select类
③调用Select类里面的方法来实现下拉框选项定位
# Select类需要引入
from selenium.webdriver.support.select import Select
# 定位下拉框元素
ime_select = driver.find_element_by_id('ime')
# 实例下拉框
select = Select(ime_select)
# 提供3种定位方式,下拉选项的索引、value值和文本值
select.select_by_index(0)
select.select_by_value('2')
select.select_by_visible_text('关闭')
而弹出框定位我们会用到alert类,弹出框的定位语句为driver.switch_to_alert()。
# 引入Alert类
from selenium.webdriver.common.alert import Alert
print('alert弹出框的文本信息为:',driver.switch_to_alert().text)
# 点击弹框的确认按钮
driver.switch_to_alert().accept()
最后,我们一起来完成1个简单的脚本,要求如下:
1.打开百度首页
2.点击icon打开新的标签页
3.清空输入框,输入关键词Airtest
4.切换到上一个打开的标签页
5.下拉框定位与实操
6.弹出框定位与实操

最后我们可以查看下这个airtest-selenium脚本的运行报告:

课下的时候,希望同学们能自己动手完成这个简单的小例子,巩固下今天学习的有关airtest-selenium的内容。
需要这个示例脚本来学习的同学,可以到我们的官方公众号回复“A09”即可获取。

小结
那么,这节课的内容就到此为止啦,今天我们主要学习了airtest-selenium辅助窗的功能、常用的api介绍以及元素的定位与实操。

至此,AirtestProject项目各个库的介绍与基本使用,我们就都讲完了。不过我们在讲授这些测试框架的使用时,都是基于我们特定的编辑器AirtestIDE。那还有很多同学想要在命令行运行脚本或者使用其它python的编辑器,比如pycharm等等,别着急,下节课我们就会带大家聊一聊,如何脱离AirtestIDE来使用这些测试框架。下期我们不见不散~