Как запустить выпуски Edge и msedgedriver для разработчиков с Python, Selenium и Linux в TravisCI?

#python #selenium #travis-ci #microsoft-edge #selenium-edgedriver

Вопрос:

В качестве побочного проекта я написал модуль 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 является самой ранней и 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 у меня есть версия dev 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 находится в пути к исполняемому файлу. У кого-нибудь есть какие-либо идеи о том, что вызывает мои проблемы или как их обойти? Если это поможет, вы можете проверить соответствующий запрос на вытягивание, в котором у меня возникли эти проблемы.

Большое вам спасибо заранее!

Ответ №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")
 

Ссылка на ссылку:
Настройки Python Selenium В Microsoft Edge Dev В Linux

Комментарии:

1. скрипт работает локально, большое вам спасибо! Я ухожу, чтобы включить это в свой проект. Ты сэкономил мне уйму времени, огромное спасибо!