【问题标题】:How can i set up my geckodriver for selenium?我怎样才能为硒设置我的壁虎驱动程序?
【发布时间】:2020-03-10 03:02:53
【问题描述】:

我正在尝试执行obeythetestinggoat 教程,但无法设置我的壁虎驱动程序,

我在 Win10 64bits 下工作

我的点子冻结显示:

Django==1.7,selenium==3.141.0,urllib3==1.25.7

当我尝试获取 geckodriver 版本(通过$geckodriver --version)时,我下载了 geckodriver (geckodriver-v0.26.0-win64) 并显示错误“应用程序错误”

我认为错误出在环境变量中(我试图将文件放在设置变量的位置(windows/system32 或 python/scripts)但没有任何效果

我也在另一台计算机上尝试这个解决方案(将文件放在路径可行的某个文件中)并且可以工作。

【问题讨论】:

    标签: python selenium firefox geckodriver selenium-firefoxdriver


    【解决方案1】:

    这个问题最近经常出现。为了打破这个神话,你无论如何都不需要安装 geckodriver

    要设置,您需要确保以下几点:


    Windows 10,64 位

    步骤:

    • 由于最新的 GeckoDriver 版本是 v0.26.0,您可以从 Releases - mozilla/geckodriver 页面下载以下任一二进制文件并将其保存在你的系统,例如在"C:\Utility\BrowserDrivers" 内:
      • geckodriver-v0.26.0-win64.zip:兼容 64 位 Windows 操作系统的 GeckoDriver
      • geckodriver-v0.26.0-win32.zip:兼容 32 位 Windows 操作系统的 GeckoDriver
    • 解压geckodriver-v0.26.0-winXY.zip文件并解压geckodriver.exe(例如"C:\Utility\BrowserDrivers\geckodriver.exe"
    • 现在您可以打开命令提示符,更改目录并发出以下命令:

      geckodriver --version
      
    • 输出:


    用法

    现在您可以使用 GeckoDriver 启动 Firefox 浏览会话,并使用以下行将 GeckoDriver 的绝对路径作为参数传递代码:

    • Python:

      from selenium import webdriver
      
      driver = webdriver.Firefox(executable_path=r'C:\Utility\BrowserDrivers\geckodriver.exe', log_path='./Logs/geckodriver.log')
      driver.get('http://seleniumhq.org/')
      driver.quit()
      
    • Java:

      import org.openqa.selenium.WebDriver;
      import org.openqa.selenium.firefox.FirefoxDriver;
      
      public class A_Firefox 
      {
          public static void main(String[] args) 
          {
              System.setProperty("webdriver.gecko.driver", "C:/Utility/BrowserDrivers/geckodriver.exe");
              WebDriver driver =  new FirefoxDriver();
              driver.get("https://stackoverflow.com");
              driver.quit();
          }
      }
      

    【讨论】:

    • 是的,我解压缩并放入一个目录,只有当我使用该命令(geckodriver --version)时才会显示下一个错误:------- ------ ------------------------------------------------------- 寻找[geckodriver v0.26.0 win64] 缓存中的驱动程序 通过路径在缓存中找到的文件 [C:\Users\Ceron\.wdm\drivers\geckodriver\v0.26.0\win64\geckodriver.exe] 回溯(最近一次调用):文件“” ,第 1 行,在 文件“C:\Users\Ceron\AppData\Local\Programs\Python\Python38-32\lib\site-packages\selenium\webdriver\firefox\webdriver.py”中,第 164 行初始化 self.service.start()
    • 文件“C:\Users\Ceron\AppData\Local\Programs\Python\Python38-32\lib\site-packages\selenium\webdriver\common\service.py”,第 98 行,在启动 self.assert_process_still_running() 文件“C:\Users\Ceron\AppData\Local\Programs\Python\Python38-32\lib\site-packages\selenium\webdriver\common\service.py”,第 109 行,在 assert_process_still_running raise WebDriverException(selenium.common.exceptions.WebDriverException:消息:服务 C:\Users\Ceron\.wdm\drivers\geckodriver\v0.26.0\win64\geckodriver.exe 意外退出。状态代码为:3221225595
    • @Tajaludo 您的主要问题是 geckodriver --version 命令显示 application error 我已经构建了答案。如果您的要求发生了变化,请随时根据您的新要求提出新问题。
    • 当我检查 geckodriver 版本时,它显示我已经安装了旧版本 (0.14.0),即使我下载、提取并添加到 PATH 较新版本。
    • @NejcOsterman 让我们在Selenium Chat Room讨论这个问题
    【解决方案2】:

    我已经这样解决了:

    1. pip install webdriver-manager
    2. 在 Python 中我编写了以下代码并运行它:

       from selenium import webdriver
       from webdriver_manager.firefox import GeckoDriverManager
       driver = webdriver.Firefox(executable_path=GeckoDriverManager().install())
      
    3. 现在将下面的路径添加到您的 PATH 变量中(当然,将 your_user_name 替换为您那里的路径:

      c:\users\your_user_name\.wdm\drivers\geckodriver\v0.26.0\win64

      此时 geckodriver 在 Python 中的 Selenium 应该是可见的。注意:运行pip freeze时geckodriver不显示

    【讨论】:

    • 我安装了 webdriver-manager 我无法添加 PATH(我找不到 geckodriver 所在的目录)我尝试使用 '$geckodriver --version 调用 geckodriver(查看安装是否正确) ' 我看到 pip freeze 没有显示 geckodriver。谢谢你的建议。
    • @Tajaludo 当您在步骤 2 中运行代码时,python 会告诉您 geckodriver 的安装位置,并且通常会按照步骤 3 中提到的路径进行。
    • 当我运行第 3 行时,它显示相同的 Geckodriver '应用程序错误',并且终端显示: Traceback(最近一次调用最后):文件“”,第 1 行,在 init 中的文件“C:\Users\Ceron\AppData\Local\Programs\Python\Python38-32\lib\site-packages\selenium\webdriver\firefox\webdriver.py”,第 164 行self.service.start() 文件“C:\Users\Ceron\AppData\Local\Programs\Python\Python38-32\lib\site-packages\selenium\webdriver\common\service.py”,第 98 行,开始self.assert_process_still_running() 文件“C:\Users\Ceron\AppData\Local\Programs\Python\Python38-32\lib\
    • site-packages\selenium\webdriver\common\service.py",第 109 行,在 assert_process_still_running 中引发 WebDriverException( selenium.common.exceptions.WebDriverException: Message: Service C:\Users\Ceron\. wdm\drivers\geckodriver\v0.26.0\win64\geckodriver.exe 意外退出,状态码为:3221225595
    • 但在错误的第一部分显示:在缓存中查找 [geckodriver v0.26.0 win64] 驱动程序 通过路径在缓存中找到的文件 [C:\Users\Ceron\.wdm\drivers\geckodriver \v0.26.0\win64\geckodriver.exe] 然后展开
    【解决方案3】:

    STEP 1 > 首先你需要下载 v0.26.0 版本,如果你使用的是 windows 下载,请确保你下载正确的操作系统,如果你使用的是 linux 或其他下载版本

    STEP2 > 将 geckodirver 放到你的 python 目录中

    Step3 > 编写这段代码

    from selenium import webdriver
    
    driver = webdriver.Firefox()
    driver.get('your url')
    

    【讨论】:

    • 我做了我从这里下载的 3 个步骤 (github.com/mozilla/geckodriver/releases) 然后我在 python/scripts 目录中设置 geckodriver(我检查了我的环境变量)当我尝试使用 geckodriver 时给我看'应用程序错误'
    • 确保你粘贴到你的python目录意味着你在哪里制作你的python文件
    • 您使用的是哪个操作系统?
    • Win10 最初的帖子包含所有技术信息。我将 geckodriver 复制到我放置 python 文件的位置(当我删除它时,停止显示该错误,所以我认为它是 geckodriver)仍然无法正常工作。
    • 你删除了什么?
    猜你喜欢
    • 2023-01-10
    • 1970-01-01
    • 2020-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-24
    • 1970-01-01
    相关资源
    最近更新 更多