python - 我怎样才能让 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
方法也没有结果。
我在这个问题上找不到其他任何东西。任何帮助表示赞赏!
解决方案
遵循浏览器版本并尝试保持驱动程序(在您的情况下为 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 应该检查驱动程序的最新版本并为您安装它。
推荐阅读
- azure-functions - 无法运行 Azure 功能。错误 - 值不能为空。(参数“提供者”)。- Java、Spring Cloud Function、Azure 函数示例
- javascript - 如何计算 h2 元素之后的输入元素的数量?
- firebase - 流中的未来,如何填充用户 onAuthStateChanged
- python - 使用 mysql.connector for python 连接 MySQL 时出错
- django - 在 ubuntu 18.04 中使用 Supervisor 和 Django 运行 Celery 时出现问题
- javascript - 优化在javascript中匹配单词的方法?
- cucumberjs - Cucumber JS 自定义格式化程序
- python - 合并 JSON 时出现 JSONDecodeError
- angular - 如何使用Angular中的依赖注入将属性指令实例传递给嵌套组件
- class - Kotlin:如何将数据成员的属性传递给自己的属性?