Airtest+python自动化-绕过验证码
今天在完成公司UI自动化时候碰到这样一个情况,使用chrome打开square系统后页面一直在加载,没有更新出来,同样的chrome领一个常用的却能够加载
图1为无法加载
图2为正常加载
此时开始排查问题,首先发现airtest自动加载页面是一个default页面,该页面没有账号登陆,定位问题可能和账号权限有关,所以选择了绕过Google登陆,直接打开square页面
添加如下代码
options=webdriver.ChromeOptions()
options.add_argument("–user-data-dir=C:\Users\Mars.CNL-4P88XT2\AppData\Local\Google\Chrome\User Data")
driver = webdriver.Chrome(chrome_options=options)
driver.implicitly_wait(20)
试着执行自动化脚本,再次出现问题
======================================================================
ERROR: runTest (app.widgets.code_runner.ide_launcher.AirtestIDECase)
Traceback (most recent call last):
File “airtest\cli\runner.py”, line 65, in runTest
File “site-packages\six.py”, line 693, in reraise
File “airtest\cli\runner.py”, line 61, in runTest
File “C:\Users\Mars.CNL-4P88XT2\Desktop\SquareSearchName.air\SquareSearchName.py”, line 13, in
driver = webdriver.Chrome(chrome_options=options)
File “D:\AirtestIDE-win-1.2.5\AirtestIDE\selenium\webdriver\chrome\webdriver.py”, line 81, in init
desired_capabilities=desired_capabilities)
File “D:\AirtestIDE-win-1.2.5\AirtestIDE\selenium\webdriver\remote\webdriver.py”, line 157, in init
self.start_session(capabilities, browser_profile)
File “D:\AirtestIDE-win-1.2.5\AirtestIDE\selenium\webdriver\remote\webdriver.py”, line 252, in start_session
response = self.execute(Command.NEW_SESSION, parameters)
File “D:\AirtestIDE-win-1.2.5\AirtestIDE\selenium\webdriver\remote\webdriver.py”, line 321, in execute
self.error_handler.check_response(response)
File “D:\AirtestIDE-win-1.2.5\AirtestIDE\selenium\webdriver\remote\errorhandler.py”, line 242, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: unknown error: Chrome failed to start: crashed
(Driver info: chromedriver=2.37.544315 (730aa6a5fdba159ac9f4c1e8cbc59bf1b5ce12b7),platform=Windows NT 10.0.18363 x86_64)
Ran 1 test in 68.200s
FAILED (errors=1)
[Finished]
============================================================
chrome启动了但是没有输入url,需要再次排查。发现chromedriver版本显示2.37,该版本是下载airtest时自带的版本,排查是否chromedriver和chrome版本不匹配造成chrome crash了,查询chromedriver和chrome匹配表,发现chromedriver2.37对应的chrome版本时66,查询本机chrome版本为86,需要先匹配版本。
这里由于重新下载低版本的chrome需要删除原有的chrome,可能会造成自己的数据丢失,于是只能下载了最匹配86版本的chromedriver,替换原本airtest中的chromedriver,重新启动airtest后发现再次报错
网上查询发现也有网友出现类似情况,解决方案为复制user data数据,并将options改名到新地址,操作方式:复制user data为user data1
重新修改options代码
options=webdriver.ChromeOptions()
options.add_argument("–user-data-dir=C:\Users\Mars.CNL-4P88XT2\AppData\Local\Google\Chrome\User Data1")
driver = webdriver.Chrome(chrome_options=options)
driver.implicitly_wait(20)
保存脚本并启动,问题顺利解决