我正在尝试在Windows 10机器上使用RobotFramework测试打包的Electron应用程序(.exe(。 我还有其他针对在同一台机器上运行良好的其他 Web 应用程序的 RobotFramework 测试。
我有我认为是正确版本的chromedriver,与我的.robot脚本位于同一目录中。 我也尝试了不同版本的chromedriver.exe。 目前我正在使用chromedriver 80.0.3987.16 我的应用程序的package.json表明电子版本是5.0.1
我创建了一个 vars.py 文件,并让机器人脚本使用 https://spage.fi/electron 中指示的代码实例化驱动程序
按照 spage.fi 链接的规定:在 vars.py 文件中:
binary_location = {"chromeOptions": {"binary": "myelectronapp.exe"}}
请注意,我已将打包进程中的.exe及其关联文件包含在与机器人脚本相同的目录中,以便删除任何路径依赖项。
我的机器人片段:
*** Settings ***
Documentation Suite description
Library SeleniumLibrary
Variables vars.py
*** Test Cases ***
Test title
[Tags] DEBUG
Log To Console calling create driver
Create Webdriver Remote desired_capabilities=${binary_location} command_executor=http://localhost:9515
我的端口 9515 通过入站规则打开。
我的经验是,无论我认为一致的chromedriver版本如何,我总是收到连接拒绝错误:
[ WARN ] Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<urllib3.connection.HTTPConnection object at 0x0000000003E3C160>: Failed to establish a new connection: [WinE
rror 10061] No connection could be made because the target machine actively refused it')': /session
x 3 次重试
我认为这不是端口可访问性问题,因为当我从命令行运行 chromedriver 然后在端口 9515 调用 url 时,我得到了我期望的回调跟踪。
很难知道这是来自语法问题还是我忽略的其他连接属性。
此错误消息...
[ WARN ] Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<urllib3.connection.HTTPConnection object at 0x0000000003E3C160>: Failed to establish a new connection: [WinError 10061] No connection could be made because the target machine actively refused it')': /session
。暗示ChromeDriver无法启动/生成新的浏览上下文,即Chrome浏览器会话。
您的主要问题是您使用的二进制文件版本之间的不兼容,如下所示:
- 您正在使用的 chromedriver =80.0.3987.16
- chromedriver=80.0.3987.16的发行说明明确提到了以下内容:
支持铬版本 80
- 大概您正在使用chrome= 79.0
- ChromeDriver v79.0.3945.36的发行说明明确提到了以下内容:
支持Chrome 79
所以ChromeDriver v80.0和Chrome浏览器v79.0之间存在明显的不匹配
。溶液
确保:
- 硒已升级到当前级别 版本 3.141.59。
- ChromeDriver 降级到 ChromeDriverv79.0 级别。 Chrome
- 已更新到当前的Chrome 版本 79.0级别。(根据 ChromeDriver v79.0 发行说明(
- 通过IDE清理项目工作中心,并仅使用所需的依赖项重新生成项目。
- 如果基本Web客户端版本太旧,请将其卸载并安装最新的Web 客户端正式发布版本。
- 重新启动系统。
- 以非 root用户身份执行
@Test
。 - 始终在方法中调用
driver.quit()
tearDown(){}
以正常关闭和销毁WebDriver和Web 客户端实例。