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()"
这导致了上面的错误。网络驱动程序的路径是正确的,不正确会导致另一个错误。
已经尝试过
- 关闭 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
- 正在尝试使用 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
- 已尝试将 Edge 二进制文件更改为 https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/ 中的最新版本,但仍然存在同样的问题。
目前无法在 CircleCI 镜像上安装 Edge。但是如果像 BrowserStack 这样的服务不适合你,有一种方法可以在你的 own/AWS 机器上使用 Windows/Edge 运行 Selenium 部署官方 Vagrant 图像。
- 下载official VM with Edge installed(Vagrant 就可以)
- 如果您计划使用 AWS 检查 vagrant-aws 在 EC2 上部署映像
- 在 Vagrant 图像上安装 Selenium。您可以尝试使用 Puppet,检查 this example, but it uses an outdated Edge version, you need to update the manifest.
- 花一些时间设置 permissions/roles 和其他 IAM 东西,以便能够从 CircleCI 连接到 EC2。
- 现在使用
webdriver.Remote
您可以连接到带有 Edge 的 Selenium(集线器或独立的)并为其安装网络驱动程序。
我正在尝试 运行 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()"
这导致了上面的错误。网络驱动程序的路径是正确的,不正确会导致另一个错误。
已经尝试过
- 关闭 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
- 正在尝试使用 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
- 已尝试将 Edge 二进制文件更改为 https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/ 中的最新版本,但仍然存在同样的问题。
目前无法在 CircleCI 镜像上安装 Edge。但是如果像 BrowserStack 这样的服务不适合你,有一种方法可以在你的 own/AWS 机器上使用 Windows/Edge 运行 Selenium 部署官方 Vagrant 图像。
- 下载official VM with Edge installed(Vagrant 就可以)
- 如果您计划使用 AWS 检查 vagrant-aws 在 EC2 上部署映像
- 在 Vagrant 图像上安装 Selenium。您可以尝试使用 Puppet,检查 this example, but it uses an outdated Edge version, you need to update the manifest.
- 花一些时间设置 permissions/roles 和其他 IAM 东西,以便能够从 CircleCI 连接到 EC2。
- 现在使用
webdriver.Remote
您可以连接到带有 Edge 的 Selenium(集线器或独立的)并为其安装网络驱动程序。