【问题标题】:How can I get selenium/geckodriver to work?我怎样才能让 selenium/geckodriver 工作?
【发布时间】:2020-10-15 12:37:58
【问题描述】:

这是我的第一个 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 方法也没有结果。

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

【问题讨论】:

    标签: python selenium screen-scraping geckodriver


    【解决方案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 manager 应该检查驱动程序的最新版本并为您安装。

    【讨论】:

    • 非常感谢,它现在以正确的方式再次安装了 gecko,但仍然有同样的错误。 'selenium.common.exceptions.SessionNotCreatedException:消息:无法找到匹配的功能集'
    • 我猜 webdriver manager 默认为最新版本。也许您的 Firefox 版本不是最新的?
    • 尝试将 "version='XX'" 添加到 GeckoDriverManager() 构造函数,其中 XX 是与您的 Firefox 版本匹配的版本。
    • 'driver = webdriver.Firefox(executable_path=GeckoDriverManager(version='81.0.2').install())' 这给出了错误:'ValueError: There is no such driver by url' 所以仍然没有成功。
    猜你喜欢
    • 2021-01-22
    • 2011-04-26
    • 2013-07-22
    • 2013-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-24
    相关资源
    最近更新 更多