Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Проблема с запуском Opera в selenium webdriver

opera
linux
python
selenium
webdriver
Теги: #<Tag:0x00007f7b60d94a30> #<Tag:0x00007f7b60d948f0> #<Tag:0x00007f7b60d947b0> #<Tag:0x00007f7b60d945f8> #<Tag:0x00007f7b60d94490>

(Chesonov Alex) #1

Всем привет. Просьба подсказать правильный алгоритм запуска Оперы с помощью Selenium Web Driver.
Система Linux Mint, Opera 29. Остальные браузеры получилось настроить и запустить…
При запуске через консоль в python пишет ошибку

WebDriverException: Message: unknown error: cannot find Opera binary
(Driver info: OperaDriver=0.2.0

Желательно пошаговая инструкция. В программировании только начинаю разбираться.
Путь к Опере /usr/bin/opera Что как ставить, куда копать? Может нужно модули установить или библиотеки правильно импортировать. Пробую на Python, буду благодарен за любую помощь. Разбираюсь уже сутки.

Или настроенную виртуалку с оперой на linux, если есть. Наверно это будет проще всего.


(Chesonov Alex) #2

Запускаю такой код запускается опера, но не работает

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

driver = webdriver.Opera(executable_path='/usr/bin/opera')
driver.get("http://www.python.org")
assert "Python" in driver.title
elem = driver.find_element_by_name("q")
elem.clear()
elem.send_keys("pycon")
elem.send_keys(Keys.RETURN)
assert "No results found." not in driver.page_source
driver.close()

(Bolatbek) #3

driver брали отсюда?

пример для оперы на питоне:


(Chesonov Alex) #4

Да драйвер брал по этой ссылке

Запускаю такой код


import time

from selenium import webdriver
from selenium.webdriver.chrome import service


webdriver_service = service.Service('/usr/bin/operadriver')
webdriver_service.start()

driver = webdriver.Remote(webdriver_service.service_url, webdriver.DesiredCapabilities.OPERA)

driver.get('https://www.google.com/')
input_txt = driver.find_element_by_name('q')
input_txt.send_keys('operadriver\n')

time.sleep(5) #see the result
driver.quit()

Результат

/usr/bin/python3.4 /home/ng/works/project/dd/test3.py
Traceback (most recent call last):
  File "/home/ng/works/project/dd/test3.py", line 10, in <module>
    driver = webdriver.Remote(webdriver_service.service_url, webdriver.DesiredCapabilities.OPERA)
  File "/usr/local/lib/python3.4/dist-packages/selenium/webdriver/remote/webdriver.py", line 90, in __init__
    self.start_session(desired_capabilities, browser_profile)
  File "/usr/local/lib/python3.4/dist-packages/selenium/webdriver/remote/webdriver.py", line 177, in start_session
    response = self.execute(Command.NEW_SESSION, capabilities)
  File "/usr/local/lib/python3.4/dist-packages/selenium/webdriver/remote/webdriver.py", line 236, in execute
    self.error_handler.check_response(response)
  File "/usr/local/lib/python3.4/dist-packages/selenium/webdriver/remote/errorhandler.py", line 192, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: unknown error: cannot find Opera binary
  (Driver info: OperaDriver=0.2.0 (ba47709ed9e35ce26dbd960fb5d75be104290d96),platform=Linux 3.19.0-32-generic x86_64)


Process finished with exit code 1

оперу поставил 32. jdk 8
Что еще проверить, может у 3 питона проблемы с запуском.

Пробовал на питоне 2, то же самое.


(Bolatbek) #5

Возможно - проблема не решена.

Вот тут идет обсуждение этой ошибки. Тянется с прошлого года.


(Chesonov Alex) #6

Спасибо. Появилась надежда на решение вопроса. Фактически нашел рабочие варианты для любой системы, кроме Linux
Правда всё на Java. Есть какая то возможность приспособить этот код для Python

{"browserName":"opera","chromeOptions":{"args":[],"extensions":[],"binary":"/usr/bin/opera"}}