#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 нет’, поэтому по-прежнему нет успеха.