Как я могу заставить selenium / geckodriver работать?

#python #selenium #screen-scraping #geckodriver

#python #селен #очистка экрана #geckodriver

Вопрос:

Это мой первый проект на python, и я не могу заставить selenium / geckodriver работать должным образом. Я использую debian 10.

Я поместил geckodriver в PATH и сделал его исполняемым, установил правильный firefox, и все обновлено.

Это предполагаемый код, и он должен, по крайней мере, заставить меня google.com , вместо этого он выдает мне ошибку:

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



class Snelstart:
    def __init__(self,username,password):
        self.username = username
        self.password = password
        self.bot = webdriver.Firefox()
    def login(self):
        bot = self.bot
        bot.get("https://www.google.com")
        time.sleep(3)

ed = Snelstart('loginner', 'pass123')
ed.login
  

Этот код выдает ошибку: selenium.common.exceptions.SessionNotCreatedException: Message: Unable to find a matching set of capabilities

Затем я получил несколько других попыток, но все они сталкиваются с той или иной проблемой:

Этот код:

 `from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
import time

cap = DesiredCapabilities().FIREFOX
cap["marionette"] = False

class Snelstart:
    def __init__(self,username,password):
        self.username = username
        self.password = password
        self.bot = webdriver.Firefox()
    def login(self):
        bot = self.bot
        bot.get("https://web.snelstart.nl/login")
        time.sleep(3)

ed = Snelstart('loginner', 'pass123')
ed.login`
  

выдает мне пустую страницу firefox, за которой следует эта ошибка: selenium.common.exceptions.WebDriverException: Message: The browser appears to have exited before we could connect.

Я также пытался дать webdriver.Firefox() executable_path/to/geckodriver . Это все еще выдает первую ошибку. И executable_path/to/firefox снова выдает мне пустую страницу. Также добавление firefox_binary метода не дает результата.

Я не могу найти что-либо еще по этой проблеме. Любая помощь приветствуется!

Ответ №1:

Следующие версии браузера и попытки синхронизировать драйверы (в вашем случае Geckodriver) могут быть утомительными.

Есть несколько решений, которые делают это автоматически для вас. В Java я использую WebDriverManager. Я не использовал что-то подобное для Python, но я нашел Webdriver-manager.

Просто используйте его так:

 from selenium import webdriver
from webdriver_manager.firefox import GeckoDriverManager

driver = webdriver.Firefox(executable_path=GeckoDriverManager().install())
  

Менеджер Webdriver должен проверить последнюю версию драйвера и установить ее для вас.

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

1. Большое спасибо, теперь он снова установил gecko правильно, но все еще имеет ту же ошибку. ‘selenium.common.exceptions. Исключение SessionNotCreatedException: Сообщение: не удается найти соответствующий набор возможностей ‘

2. Я думаю, что webdriver manager по умолчанию использует последнюю версию. Возможно, ваша версия Firefox не обновлена?

3. Попробуйте добавить «version = ‘XX'» в конструктор GeckoDriverManager (), где XX — версия, соответствующая вашей версии Firefox.

4. ‘driver = webdriver. Firefox(executable_path=GeckoDriverManager(version= ‘81.0.2’).install())’ выдает ошибку: ‘Ошибка значения: такого драйвера по URL нет’, поэтому по-прежнему нет успеха.