我如何在 TravisCI 中使用 Python、Selenium 和 Linux 运行 Edge 和 msededriver 的开发版本?
How do I run the dev releases of Edge and msedgedriver with Python, Selenium, and Linux in TravisCI?
作为业余项目,我编写了一个 Python 模块,它基本上是 Selenium 的包装器。我仅使用 Chrome 和 Firefox 测试了所有功能,现在我正在尝试添加 Edge。我在让我的测试通过我的 Travis CI (Linux) 实例时遇到问题,我认为这是因为 MS Edge 和 msedgedriver
是 dev
版本构建服务器,在撰写本文时为 91.0.852.0。
这是我的怀疑,因为测试在我的本地机器上通过了,Windows 系统使用最新的非开发版本的 Edge 及其驱动程序 90.0.818.41。我正在使用 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
在可执行路径中。有没有人对导致我的问题的原因或解决方法有任何想法?如果有帮助,您可以查看我遇到这些问题的 the relevant pull request。
非常感谢您!
您可以试试下面的代码,看看在Linux中是否能正常运行。请注意将代码中的路径更改为您自己的:
from msedge.selenium_tools import EdgeOptions, Edge
options = EdgeOptions()
options.use_chromium = True
options.binary_location = r"/usr/bin/microsoft-edge-dev"
options.set_capability("platform", "LINUX")
webdriver_path = r"/your_path/msedgewebdriver"
browser = Edge(options=options, executable_path=webdriver_path)
browser.get("https://www.google.com")
参考资料link:
Python Selenium Settings On Microsoft Edge Dev On Linux
作为业余项目,我编写了一个 Python 模块,它基本上是 Selenium 的包装器。我仅使用 Chrome 和 Firefox 测试了所有功能,现在我正在尝试添加 Edge。我在让我的测试通过我的 Travis CI (Linux) 实例时遇到问题,我认为这是因为 MS Edge 和 msedgedriver
是 dev
版本构建服务器,在撰写本文时为 91.0.852.0。
这是我的怀疑,因为测试在我的本地机器上通过了,Windows 系统使用最新的非开发版本的 Edge 及其驱动程序 90.0.818.41。我正在使用 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
在可执行路径中。有没有人对导致我的问题的原因或解决方法有任何想法?如果有帮助,您可以查看我遇到这些问题的 the relevant pull request。
非常感谢您!
您可以试试下面的代码,看看在Linux中是否能正常运行。请注意将代码中的路径更改为您自己的:
from msedge.selenium_tools import EdgeOptions, Edge
options = EdgeOptions()
options.use_chromium = True
options.binary_location = r"/usr/bin/microsoft-edge-dev"
options.set_capability("platform", "LINUX")
webdriver_path = r"/your_path/msedgewebdriver"
browser = Edge(options=options, executable_path=webdriver_path)
browser.get("https://www.google.com")
参考资料link: Python Selenium Settings On Microsoft Edge Dev On Linux