首页 > 解决方案 > 我怎样才能让 selenium/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方法也没有结果。

我在这个问题上找不到其他任何东西。任何帮助表示赞赏!

标签: pythonseleniumscreen-scrapinggeckodriver

解决方案


遵循浏览器版本并尝试保持驱动程序(在您的情况下为 Geckodriver)同步可能会很累。

有一些解决方案可以自动为您做到这一点。在 Java 中,我使用 WebDriverManager。我没有为 Python 使用过类似的东西,但我找到了 Webdriver-manager

只需像这样使用它:

from selenium import webdriver
from webdriver_manager.firefox import GeckoDriverManager

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

Webdriver manager 应该检查驱动程序的最新版本并为您安装它。


推荐阅读