1. 前言

很多同学选择使用airtest-selenium来做Web自动化,是因为想使用airtest-selenium封装的一些关于图像识别的方法,像图像点击、图像断言、截图等等。

但是在实际应用过程中,同学们可能会遇到一些问题,这里我们详细聊一聊同学们在使用airtest-selenium进行Web自动化测试时,容易遇到的一些问题及其解决办法。

2. 基本概念和用法

1)airtest-selenium是标准的selenium

其实airtest-selenium就是标准的selenium,只不过我们在这个库里额外封装了一些关于 图像识别 和 标签页切换 的方法:

  • airtest_touch:图像点击
  • assert_template:断言图像存在
  • snapshot:给网页截图
  • switch_to_previous_tab:切换到上一个打开的标签页
  • switch_to_new_tab:切换到最新打开的标签页

2)使用AirtestIDE提供的辅助窗

为了让同学们快速上手,我们在AirtestIDE提供了对应的辅助窗,默认情况下不展示。

但我们需要编写Web自动化测试脚本时,可以在IDE的顶部菜单栏,窗口选项下勾选上Selenium Window:

使用这些快捷功能,可以帮我们录制/快速生产Web自动化测试脚本。不过需要注意的是,为了使用辅助窗的录制/快捷功能,我们需要点击 初始化按钮 打开1个chrome浏览器窗口,并且在该窗口上录制脚本。

关于airtest-selenium的详细入门教程,可以参考我们的往期推文:

  • 在AirtestIDE中使用airtest-selenium
  • selenium常用api介绍

3)结合更多selenium的API

另外,我们非常建议大家先学习一些selenium基础,再来使用airtest-selenium进行Web自动化的测试工作。

这样我们就可以结合selenium更加丰富的API实现更加丰富和复杂的自动化测试脚本。(网上有非常丰富的关于selenium的教程文档,同学们可以自行查找)

3. 常见问题

1)使用airtest-selenium封装的图像方法报错

有些同学在使用airtest-selenium封装的一些图像方法时,出现类似 name ‘Template’ is not defined 的报错:


通常是因为忘记/误删了引入Airtest库的方法,我们可以在脚本开头添加:

from airtest.core.api import *

2)混淆airtest-selenium的WebChrome()和selenium的webdriver.Chrome()
在airtest-selenium库里,我们可以通过这样的方式实例化一个chrome对象:

from airtest_selenium.proxy import WebChrome
driver = WebChrome()

而在selenium库里,我们则是通过下述方式对chrome进行实例化的:

from selenium import webdriver
driver = webdriver.Chrome()

如果我们要使用airtest-selenium封装的图像方法,像 airtest_touch、snapshot和assert_template等,我们就必须实例化airtest-selenium提供的 WebChrome 类。

否则会出现类似 AttributeError: ‘WebDriver’ object has no attribute ‘snapshot’ 的报错:

3)暂不支持在Mac上使用airtest-selenium

目前暂不支持在Mac上使用airtest-selenium,使用时我们也会弹出如下的提示:
Current OS is not ‘Windows’! You can’t use airtest function of Airtest-Selenium. > <

4)airtest-selenium报告插件

在生成airtest-selenium(Web自动化测试)的报告时,我们需要加载专用的报告插件。
如果我们使用AirtestIDE的 查看报告 按钮来生成,会自动帮我们加载这个插件:

# 命令行添加airtest-selenium报告插件的方式
--plugin airtest_selenium.report

如果我们使用脚本生成测试报告,则需要手动指定 plugins 参数:

from airtest.report.report import LogToHtmlh1 = LogToHtml(script_root=r'D:\test\report01.air', log_root=r"D:\test\report01.air\log", export_dir=r"D:\test\report02" , lang='en', plugins=["airtest_selenium.report"])
h1.report()

5)unknown error: cannot find Chrome binary
这是同学们在使用airtest-selenium进行Web测试 最常问 的一个问题了。通常情况是,我们在AirtestIDE的Selenium Window辅助窗中,点击打开浏览器的按钮,可以正常打开一个chrome浏览器的窗口(因为我们事先在选项-设置中设置了chrome.exe的路径):

但是在执行airtest-selenium脚本,运行到打开浏览器窗口的代码时,却会报类似下述的报错:

selenium.common.exceptions.WebDriverException: Message: unknown error: cannot find Chrome binary(Driver info: chromedriver=2.37.544315 (730aa6a5fdba159ac9f4c1e8cbc59bf1b5ce12b7),platform=Windows NT 10.0.19043 x86_64)

如果我们的chrome浏览器是安装在默认路径下的(我们也非常建议将chrome浏览器安装到默认路径下,可以省去很多问题),出现上述报错时,我们需要检查以下2点:

  • chrome浏览器匹配的驱动(chromedriver)有没有放在环境变量目录位置上
  • chrome 浏览器版本与驱动(chromedriver)版本是否匹配

如果没有放在正确目录下或者与现有浏览器版本不匹配,我们可以在查看安装好的chrome浏览器版本后,到这个路径下下载匹配的chromedriver:http://chromedriver.storage.googleapis.com/index.html 。
如果我们的chrome浏览器没有安装在默认路径下,也很有可能因为Selenium找不到二进制的chrome.exe文件而抛出上述的异常,通常我们可以选择以下方式来解决:

  • 卸载已安装的chrome浏览器,然后重新安装到默认路径下
  • 不重新安装的话,可以直接 配置chrome浏览器的安装目录到环境变量中

当然我们也支持使用使用代码来指定chrome.exe或者chromedriver(2者的版本必须匹配)的路径:

# -*- encoding=utf8 -*-
__author__ = "AirtestProject"from airtest.core.api import *from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from airtest_selenium.proxy import WebChrome
from selenium.webdriver.chrome.options import Optionsopt = Options()
opt.binary_location = r"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"
driver = WebChrome(options=opt,executable_path=r"C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe")

6)脱离AirtestIDE运行airtest-selenium脚本时未安装库

如果我们使用AirtestIDE自带的环境来运行Web自动化脚本,则直接运行即可,因为内嵌的python环境已经事先安装好了airtest-selenium库。

但是如果我们指定使用本地python环境或者脱离AirtestIDE运行Web自动化脚本,则需要我们在对应的python环境里安装好airtest-selenium库:

pip install airtest-selenium

否则会出现 no module named ‘airtest_selenium’ 的报错:

另外,也有些同学在安装这个库时,可能会出现 no module named 'pynput’的报错,此时我们需要先安装好 pynput 库,再来安装airtest-selenium:

pip install pynput
pip install airtest-selenium

7)Web自动化的输入与键盘操作

与Android、iOS、Windows平台不一样的是,在Web自动化脚本中,我们并非使用 text 进行文本输入操作,也不是使用 keyevent 模拟键盘操作。

而是使用 send_keys,以下是一个简单的例子,我们在打开百度首页后,定位到搜索文本输入框,输入一定的文本,然后执行键盘回车操作:

# -*- encoding=utf8 -*-
__author__ = "AirtestProject"from airtest.core.api import *from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from airtest_selenium.proxy import WebChrome
driver = WebChrome()
driver.implicitly_wait(20)auto_setup(__file__)
driver.get("https://www.baidu.com/")
sleep(1.0)
# 输入文本
driver.find_element_by_id("kw").send_keys("abc")
# 键盘回车操作
driver.find_element_by_id("kw").send_keys(Keys.ENTER)

(呀!这么认真都看到这里啦,还不“点赞收藏”把教程mark起来吗~)

最后推荐一个大佬公众号:伤心的辣条 !(我也是在其中收获颇丰) 进去你能免费获取一份216页软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!,其中资料包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。

学习不要孤军奋战,最好是能抱团取暖,相互成就一起成长,群众效应的效果是非常强大的,大家一起学习,一起打卡,会更有学习动力,也更能坚持下去。你可以加入我们的测试技术交流扣扣群:914172719(里面有各种软件测试资源和技术讨论)


好文推荐

转行面试,跳槽面试,软件测试人员都必须知道的这几种面试技巧!

面试经:一线城市搬砖!又面软件测试岗,5000就知足了…

面试官:工作三年,还来面初级测试?恐怕你的软件测试工程师的头衔要加双引号…

什么样的人适合从事软件测试工作?

那个准点下班的人,比我先升职了…

测试岗反复跳槽,跳着跳着就跳没了…

包装成1年工作经验的测试工程师,我给他的面试前的建议如下

“入职一年,那个被高薪挖来的自动化软件测试被劝退了。”

4个月自学软件测试面进阿里!如何从功能测试转成自动化…我经历了什么

6000元报了培训班,3个月后我成功“骗”进了腾讯大厂,月薪15000

聊一聊使用airtest-selenium做Web自动化的常见问题相关推荐

  1. html 打开页面光标自动选中输入框_初识selenium之web自动化

    今天我们学习下如何使用python编写web自动化,谈到web自动化,那么我们需要了解下市面上做web自动化的几种方式,Robotframework工具,网红WebUI自动化测试神器 - Cypres ...

  2. pythonselenium教程模拟鼠标和键盘_【02篇】python+selenium实现Web自动化:鼠标操作和键盘操作!...

    一.前言 最近问我自动化的人确实有点多,个人突发奇想:想从0开始讲解python+selenium实现Web自动化测试,请关注博客持续更新! 这是python+selenium实现Web自动化第二篇博 ...

  3. 在使用selenium 做IE自动化操作时 请求状态码 400【帮忙解决或者找出问题所在悬赏200】

    在使用selenium 做IE自动化操作时 发现定位点击按钮无效,后来发现,人工点击按钮时,请求状态码为200,自动化点击时状态码为400,请问大家有什么方法可以尝试解决这个问题吗? 对方可能使用了某 ...

  4. 做Web自动化前,你必会的几个技能

    学习web自动化的前提条件:手工测试(了解各种测试的知识).学习编程语言.学习Web基础.学习自动化测试工具 .学习自动化测试框架 .需要掌握前端的一些知识,无论学习语言还是前端知识,都是为了接下来的 ...

  5. 偷懒大法好,用 selenium 做 web 端自动化测试

    自动化入门介绍 实验介绍 本次实验主要介绍什么是自动化测试和自动化测试工具 selenium.然后介绍怎么安装浏览器驱动工具 webdriver,并且开发一个简单的自动化测试脚本,体会自动化测试是怎么 ...

  6. WEB自动化(Python+selenium)的API

    在做Web自动化过程中,汇总了Python+selenium的API相关方法,给公司里的同事做了第二次培训,分享给大家                                         ...

  7. Python + Selenium实现web端的UI自动化

    我的第一个Python自动化用例 环境准备 安装好Python 下载最新Python 命令行下查看是否安装成功: Python自带运行环境: IDLE是Python自带的集成开发环境,在开始菜单中搜索 ...

  8. 遇到的坑_新手搭建web自动化遇到的坑...

    关注并置顶[柠檬班] 就能第一时间找到呦~ 现在自动化测试越来越火,企业在招聘人才的时候明明招的是功能测试. 但是面试的时候还是问到了,同学,你会不会自动化呀? 不会呀?那可能不是很适合我们这个岗位. ...

  9. 自动化html定位视频教程,web自动化——元素定位

    我们在做WEB自动化时,最根本的就是操作页面上的元素,首先我们要能找到这些元素,然后才能操作这些元素. 元素定位的8种方法: id.name.class.tag.link.partail_link.x ...

最新文章

  1. DSP调试报错:OMAPL138 Connect to PRSC failed
  2. 【PL/SQL】学习笔记 (9)例外之 no_data_found
  3. ADO.NET知识汇总
  4. 计算机启动类型bios,UEFI还是Legacy BIOS?如何确定Windows启动类型
  5. angularjs的三种注入方式
  6. linux多个文件打包命令行,linux命令五十七之tar命令;linux多个文件压缩打包到一个压缩文件...
  7. 汇编debug与masm命令
  8. 测试环境服务器windows server 2003资源下载
  9. [3]、Swagger——解决前后端打架问题
  10. 微信小程序接口服务器,微信小程序--调用外部服务器接口
  11. 敏感词过滤及反垃圾文本的相关知识(欢迎收藏)
  12. 几个创业小故事的启示
  13. js验证身份证(详细版)
  14. 做自媒体如何获得更多的流量?
  15. 北京师范大学新闻与传播专硕考研一战上岸经验分享
  16. JAVA日记之mybatis-1 ----喝最烈的酒.
  17. C语言小项目 -- 通讯录(静态版+动态版+文件版)
  18. 上传百度文库要掌握的方法技巧,这样上传百度文库通过率高
  19. 【小甲鱼C语言】课后笔记第一章第四节——数据类型
  20. 企业微信+esaywechat 扫码授权登录

热门文章

  1. 测量两台机器的的网络延迟和时间差
  2. ug装配绕轴旋转_UG绘制小吊扇模型,建模装配还能运动起来
  3. 计算机网络管理4级有什么用,计算机网络管理二级4浅析.doc
  4. linux mysql web界面吗_Linux下安装MySQL Web 管理工具phpMyAdmin
  5. 计算机一级笔试2012,2012计算机一级笔试模拟试卷及答案
  6. 小米手机查看linux代码,如何识别小米设备-MIUI系统
  7. CoCreateInstance调用返回代码0x80040154的一种解决方法
  8. error C3859: 超过了PCH的虚拟内存范围;请使用“-Zm137”或更大的命令行选项重新编译
  9. 洛谷P1351 联合权值(树形dp)
  10. ThinkJS 和 Sprite.js 服务端渲染实践