作为一个附带项目,我编写了一个 Python 模块,它基本上是 Selenium 的包装器。我只用 Chrome 和 Firefox 测试了所有功能,现在我正在尝试添加 Edge。我在让我的测试通过我的 Travis CI (Linux) 实例时遇到问题,我认为这是因为 MS Edge 和msedgedriver
是dev
构建服务器中的版本,在撰写本文时为 91.0.852.0。
这是我的怀疑,因为测试在我的本地机器上通过,这是一个使用最新非开发版 Edge 及其驱动程序 90.0.818.41 的 Windows 系统。我正在使用selenium
3.141.0 和msedge-selenium-tools
3.141.3。
如果可能的话,我会尝试在构建服务器中使用非开发版本,但据我所知,91 版是最早的 Edge 并且msedgedriver
与 Linux 兼容。
为了了解我遇到的错误类型,这里有一个示例测试脚本:
from msedge.selenium_tools import EdgeOptions
from msedge.selenium_tools import webdriver as EdgeDriver
edge_options = EdgeOptions()
edge_options.use_chromium = True
driver = EdgeDriver.WebDriver(options=edge_options)
我从中得到的错误是:
selenium.common.exceptions.SessionNotCreatedException: Message: session not created: No matching capabilities found
msedgedriver
据我了解,当不在可执行路径中时会发生此错误。在 Travis CI 中,我msedgedriver
在可执行路径中有开发版本,这是我认为问题的另一个原因,因为我正在使用开发版本。
.travis.yml
这是我文件的相关部分:
# Get Edge and its driver
- curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg
- sudo install -o root -g root -m 644 microsoft.gpg /etc/apt/trusted.gpg.d/
- sudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/edge stable main" > /etc/apt/sources.list.d/microsoft-edge-dev.list'
- sudo rm microsoft.gpg
- sudo apt update
- sudo apt install microsoft-edge-dev
- wget https://msedgedriver.azureedge.net/91.0.852.0/edgedriver_linux64.zip -P ~/
- unzip ~/edgedriver_linux64.zip -d ~/
- rm ~/edgedriver_linux64.zip
- sudo mv -f ~/msedgedriver /usr/local/share/
- sudo chmod 777 /usr/local/share/msedgedriver
- sudo ln -s /usr/local/share/msedgedriver /usr/local/bin/msedgedriver
# Debugging statement, remove when this is figured out
- which msedgedriver
- echo $PATH
- ls /usr/local/share
- ls /usr/local/bin
我可以从可执行路径下的内容# Debugging statement...
中看出。msedgedriver
有人对导致我的问题的原因或解决方法有任何想法吗?如果有帮助,您可以查看我遇到这些问题的相关拉取请求。
非常感谢您的先进!