我如何在 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 和 msedgedriverdev 版本构建服务器,在撰写本文时为 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