Windows Edge webdriver 失败并出现 WebDriverException:消息:未知错误

Windows Edge webdriver fails with WebDriverException: Message: Unknown error

我正在尝试 运行 behave 在 CircleCI 中的 Windows Edge 上进行测试,但即使是简单的测试也无法通过

初始化会话
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "C:\Users\circleci\AppData\Roaming\Python\Python36\site-packages\selenium\webdriver\edge\webdriver.py", line 66, in __init__
    desired_capabilities=capabilities)
  File "C:\Users\circleci\AppData\Roaming\Python\Python36\site-packages\selenium\webdriver\remote\webdriver.py", line 157, in __init__
    self.start_session(capabilities, browser_profile)
  File "C:\Users\circleci\AppData\Roaming\Python\Python36\site-packages\selenium\webdriver\remote\webdriver.py", line 252, in start_session
    response = self.execute(Command.NEW_SESSION, parameters)
  File "C:\Users\circleci\AppData\Roaming\Python\Python36\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "C:\Users\circleci\AppData\Roaming\Python\Python36\site-packages\selenium\webdriver\remote\errorhandler.py", line 208, in check_response
    raise exception_class(value)
selenium.common.exceptions.WebDriverException: Message: Unknown error

设置

我使用标准的 CircleCI windows 图片 windows-server-2019-vs2019:stable

在那里安装 Edge 驱动程序并尝试将其作为服务启动:

choco install -y jdk10 selenium-edge-driver selenium

然后ssh到机器上调试试试

python -c "from selenium import webdriver; webdriver.Edge()"

这导致了上面的错误。网络驱动程序的路径是正确的,不正确会导致另一个错误。

已经尝试过

  1. 关闭 UAC(使用 cmd.exe):
reg.exe ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v EnableLUA /t REG_DWORD /d 0 /f
reg.exe ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v PromptOnSecureDesktop /t REG_DWORD /d 0 /f
reg.exe ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v ConsentPromptBehaviorAdmin /t REG_DWORD /d 0 /f
  1. 正在尝试使用 Chrome 设置进行连接:

服务器自述:

/c/tools/selenium/MicrosoftWebDriver.exe
[14:48:13.545] - Listening on http://localhost:17556/
python -c "from selenium.webdriver.remote.webdriver import WebDriver as RemoteWebDriver; from selenium.webdriver.common.desired_capabilities import DesiredCapabilities; from selenium.webdriver.chrome.remote_connection import ChromeRemoteConnection; rwd = RemoteWebDriver(command_executor=ChromeRemoteConnection(remote_server_addr='http://localhost:17556', keep_alive=False))"

这会导致 401 错误错误请求,或者如果我更新 desired_capabilities 类似:

selenium.common.exceptions.SessionNotCreatedException: Message: session not created: No matching capabilities found
  1. 已尝试将 Edge 二进制文件更改为 https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/ 中的最新版本,但仍然存在同样的问题。

目前无法在 CircleCI 镜像上安装 Edge。但是如果像 BrowserStack 这样的服务不适合你,有一种方法可以在你的 own/AWS 机器上使用 Windows/Edge 运行 Selenium 部署官方 Vagrant 图像。

  1. 下载official VM with Edge installed(Vagrant 就可以)
  2. 如果您计划使用 AWS 检查 vagrant-aws 在 EC2 上部署映像
  3. 在 Vagrant 图像上安装 Selenium。您可以尝试使用 Puppet,检查 this example, but it uses an outdated Edge version, you need to update the manifest.
  4. 花一些时间设置 permissions/roles 和其他 IAM 东西,以便能够从 CircleCI 连接到 EC2。
  5. 现在使用 webdriver.Remote 您可以连接到带有 Edge 的 Selenium(集线器或独立的)并为其安装网络驱动程序。