0

作为一个附带项目,我编写了一个 Python 模块,它基本上是 Selenium 的包装器。我只用 Chrome 和 Firefox 测试了所有功能,现在我正在尝试添加 Edge。我在让我的测试通过我的 Travis CI (Linux) 实例时遇到问题,我认为这是因为 MS Edge 和msedgedriverdev构建服务器中的版本,在撰写本文时为 91.0.852.0。

这是我的怀疑,因为测试在我的本地机器上通过,这是一个使用最新非开发版 Edge 及其驱动程序 90.0.818.41 的 Windows 系统。我正在使用selenium3.141.0 和msedge-selenium-tools3.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有人对导致我的问题的原因或解决方法有任何想法吗?如果有帮助,您可以查看我遇到这些问题的相关拉取请求。

非常感谢您的先进!

4

1 回答 1

1

你可以试试下面的代码,看看它是否在 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")

参考链接: Linux 上 Microsoft Edge Dev 上的 Python Selenium 设置

于 2021-04-20T03:29:30.160 回答