Selenium 远程部署采坑记一——ChromeDriver服务

有段时间没更新UI自动化内容了,最近公司的测试进度逐步进入正轨,业务测试也需要更强的自动化脚本来支撑,所以又需要准备接入UI自动化来进行一些内容的测试。

这次想玩点不一样的,部署远程Selenium服务。

从Selenium的源码中可以很轻松的获知它是支持远程调试的,只需要启动WebDriver服务时进行一些配置。

具体的配置方法这里就不细说了,只说实施过程中碰到的坑以及对应的解决方法。

1、WebDriver服务启动后提示 Only local connections are allowed.

这个是因为Chrome默认不允许跨机器调试,只需要给启动命令加上白名单即可。

具体参考文档点击这里

最后完整的启动命令如下:

chromedriver.exe --port=13800 --whitelisted-ips=""

启动成功后会提示:All remote connections are allowed. Use an allowlist instead! 告诉我们白名单列表不能是空的,这个我们还在调试阶段所以暂时不管。

2、外网访问端口已经打开,但是依旧报无法访问错误。

解决问题1之前,我已经打开了13800端口的外网访问权限,但是此时使用外网访问却始终超时,无法访问。

后来经过搭建最简服务器验证错误的方法发现,主要是阿里云的Windows服务器自身带了防火墙,服务被墙了。将防火墙关闭即可。

当然,将防火墙直接关闭是很危险的操作,可以在阿里云和服务器上同时将服务端口加入白名单即可。

设置好后,再次执行问题1里的命令,此时终于可以正常访问 /status 接口,获取到服务状态。

3、DevToolsActivePort file doesn't exist

正当我以为所有问题都解决了之后,启动Selenium准备做一个最简单的测试,却发现连接服务的速度特别慢,并且最终报了上面的错误。

调试之后,找到了出现错误的代码

self.start_session(capabilities, browser_profile)

是获取通信session时报的错误,经过一番Google,整合了多个帖子的内容后,终于找到解决办法

DevToolsActivePort file doesn't exist - ChromeDriver through Selenium on Ubuntu Server · Issue #6049 · SeleniumHQ/selenium · GitHub

selenium - WebDriverException: unknown error: DevToolsActivePort file doesn't exist while trying to initiate Chrome Browser - Stack Overflow

参考文档如上

最终需要使用如下启动WebDriver的命令

chromedriver.exe --port=13800 --whitelisted-ips="" --remote-debugging-port=13800--remote-debugging-port=13800 --enable-webgl --no-sandbox --disable-dev-shm-usage

启动服务后,再在本地启动Selenium代码,终于可以正常访问了。

小结

从开始到最终能够访问远端WebDriver服务,总共历时5个小时,2和3两个问题花了绝大部分时间,并且得到了开发大佬的鼎力协助,甚为感激。

远程部署只是UI自动化计划的开始,后续会持续更新所有的实施过程中的采坑记。

你可能感兴趣的:(Selenium 远程部署采坑记一——ChromeDriver服务)