Selenium是一个用于Web应用程序的自动化测试工具。它直接运行在浏览器中,可以模拟用户在浏览器上面的行为操作。在AirtestIDE中,开发者也给提供了使用Selenium的窗口。不过使用的框架是Airtest-Selenium框架。Airtest-Selenium是对selenium的python库做的一层封装,它添加了部分图像识别的接口,也可以生成网页版测试报告。
一、IDE中的Selenium窗口
默认情况下,IDE没有并显示Selenium的窗口,所以我们需要在IDE顶部的窗口
菜单下,把Selenium Window
勾选上,勾选之后Selenium的窗口才会显示在IDE界面的左侧。
Selenium Window给我们提供了一些常用的按钮,比如点击窗口下类似地球的按钮,会自动帮我们在脚本编辑窗口插入一些初始化代码:
插入代码之前,我们需要在脚本窗口弹出的黄色提供框中,选择Yes允许插入代码:
这样,脚本编辑窗就会自动插入如下代码:
# 引入selenium的webdriver模块 from selenium import webdriver from selenium.webdriver.common.keys import Keys from airtest_selenium.proxy import WebChrome #创建一个实例,代码运行到这里,会打开一个chrome浏览器 driver = WebChrome() driver.implicitly_wait(20)
需要注意的是,如果是首次使用,IDE会弹窗提示需要设置谷歌浏览器的路径:
这时我们就需要先到选项--设置
中,找到Selenium那部分内容,然后把chrome的路径设置好,才能正常插入上述代码。
二、Selenium的常用方法
from airtest_selenium.proxy import WebChrome import time #打开浏览器 driver = WebChrome(r"D:\tools\driver\chromedriver.exe") driver.implicitly_wait(20) #设置浏览器最大化 driver.maximize_window() #打开网页 driver.get("http://www.baidu.com") #输入百度一下 driver.find_element_by_id('kw').send_keys("马保国") #点击 百度一下 driver.find_element_by_id("su").click() #点击 马保国 百度百科 driver.find_element_by_xpath('//div[@id="content_left"]/div[1]//h3').click() #切换标签页面, 切换到新打开的标签页, airtest单独封装的方法 driver.switch_to_new_tab() #获取马保国结束 titledesc = driver.find_element_by_xpath('//dd/h2').text print(titledesc) time.sleep(2) #切换回上一页 driver.switch_to_previous_tab() #点击 图片 driver.find_element_by_xpath('//div[@class="s_tab_inner"]/a[3]').click() #关闭浏览器 driver.quit()
三、Airtest-Selenium简介
3.1.图像识别接口
Airtest-Selenium对图像识别的封装有两个接口,图像识别点击和图像识别断言:
①点击Selenium Window下方的airtest_touch按钮
在浏览器页面上截取你想要点击位置的图片,双击完成截图,脚本编辑窗口会自动生成1条图像识别点击的脚本
driver.airtest_touch(Template(r"tpl1620806672599.png", record_pos=(-0.17, -0.042), resolution=(1920, 1080)))
②点击Selenium Window下方的airtest_template按钮
在浏览器页面上截取你想要进行断言的图片,双击完成截图,脚本编辑窗口会自动生成1条图像识别断言脚本
driver.assert_template(Template(r"tpl1620806934003.png", record_pos=(-0.163, -0.039), resolution=(1920, 1080)), "成功打开百度首页")
3.2.多标签页切换
多标签页
selenium提供了切换标签页的接口。
driver.switch_to.window(driver.window_handles[number])
这个语句执行后,可以切换到第number个打开的标签页。但是对于用户来说,这个接口不是那么好理解与调用,因为这样需要记住标签打开的顺序。
大部分时候,切换标签页的操作一般都出现在:打开新窗口、关闭标签页这两种情况下。因此,Airtset-Selenium封装了两个接口:
driver.switch_to_new_tab()
driver.switch_to_previous_tab()
用户只需在切换到最新打开的标签页时,调用switch_to_new_tab
。另外在结束当前标签页时,切换到上一个打开的标签页时,调用switch_to_previous_tab()
即可,
生成报告
被Airtest-Selenium封装的接口,运行过后都会生成对应的报告,在AirtestIDE中可以直接点击生成报告按钮,即可查看对应的报告内容。