代码之家  ›  专栏  ›  技术社区  ›  Nick Evans

硒。常见的例外情况。WebDriverException:消息:尝试通过Raspberry-pi3中的GeckoDriver打开Firefox浏览器时,连接被拒绝

  •  1
  • Nick Evans  · 技术社区  · 6 年前

    嗨,我有一个树莓皮3,并决定尝试让selenium与python 3一起运行。我使用“pip3 install selenium”安装了它,没有出现任何错误。在我用这段代码编写了一个小测试脚本之后:

    from selenium import webdriver
    from selenium.webdriver.common.keys import Keys
    
    # create a new Firefox session
    driver = webdriver.Firefox()
    driver.implicitly_wait(30)
    driver.maximize_window()
    
    # Navigate to the application home page
    driver.get("http://www.google.com")
    
    # get the search textbox
    search_field = driver.find_element_by_id("lst-ib")
    search_field.clear()
    
    # enter search keyword and submit
    search_field.send_keys("Selenium WebDriver Interview questions")
    search_field.submit()
    
    # get the list of elements which are displayed after the search
    # currently on result page using find_elements_by_class_name method
    lists= driver.find_elements_by_class_name("_Rm")
    
    # get the number of elements found
    print ("Found " + str(len(lists)) + " searches:")
    
    # iterate through each element and print the text that is
    # name of the search
    
    i=0
    for listitem in lists:
       print (listitem.get_attribute("innerHTML"))
       i=i+1
       if(i>10):
          break
    
    # close the browser window
    driver.quit()
    

    但这给了我一个错误:

    Traceback (most recent call last):
      File "/home/pi/SeleniumTest.py", line 5, in <module>
        driver = webdriver.Firefox()
      File "/home/pi/.local/lib/python3.5/site-packages/selenium/webdriver/firefox/webdriver.py", line 170, in __init__
        keep_alive=True)
      File "/home/pi/.local/lib/python3.5/site-packages/selenium/webdriver/remote/webdriver.py", line 156, in __init__
        self.start_session(capabilities, browser_profile)
      File "/home/pi/.local/lib/python3.5/site-packages/selenium/webdriver/remote/webdriver.py", line 245, in start_session
        response = self.execute(Command.NEW_SESSION, parameters)
      File "/home/pi/.local/lib/python3.5/site-packages/selenium/webdriver/remote/webdriver.py", line 314, in execute
        self.error_handler.check_response(response)
      File "/home/pi/.local/lib/python3.5/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
        raise exception_class(message, screen, stacktrace)
    selenium.common.exceptions.WebDriverException: Message: connection refused
    

    非常感谢您的帮助,谢谢:)

    2 回复  |  直到 6 年前
        1
  •  0
  •   undetected Selenium    6 年前

    此错误消息。。。

    selenium.common.exceptions.WebDriverException: Message: connection refused
    

    。。。意味着 壁虎河 无法启动/生成新的 Web客户端 会话/实例成功。

    您使用的二进制文件的版本信息可能会让我们对您观察到的错误有更多的了解。

    但是,您可能需要通过 钥匙 可执行文件路径 以及 价值 指的是 壁虎河 初始化时作为参数 Web驱动程序 控件 具体如下:

    from selenium import webdriver
    
    # create a new Firefox session
    driver = webdriver.Firefox(executable_path=r'/path/to/geckodriver')
    

    其他建议

    • 升级 硒元素 至当前水平 Version 3.11.0
    • 升级 壁虎河 GeckoDriver v0.20.1 数量
    • 确保 壁虎河 存在于通过参数提到的指定位置 可执行文件路径
    • 确保 壁虎河 对非根用户具有可执行权限。
    • 升级 Firefox 版本至 Firefox v59。0.2 级别。
    • 清洁的 你的 工程工作区 通过您的 IDE 重建 您的项目仅具有必需的依赖项。
    • 使用 CCleaner 用于在执行 测试套件
    • 如果你的基地 Web客户端 版本太旧,请通过卸载 Revo Uninstaller 并安装最新的GA和发布版本 Web客户端
    • 采取行动 系统重启
    • 执行您的 Test 作为非root用户。
    • 始终调用 driver.quit() 在内部 tearDown(){} 关闭方法(&N);销毁 Web驱动程序 Web客户端 实例优雅。
        2
  •  0
  •   Dalvenjia    6 年前

    你需要安装geckodriver,这是一项要求,我不知道apt是否提供,但如果没有,你可以从GitHub的官方发布页面下载armv7hf版本 https://github.com/mozilla/geckodriver/releases

    如果需要手动安装,请提取可执行文件 geckodriver 到路径中的目录,通常 /usr/local/bin 或“$主页/仓位”`

    编辑: 另一个可能的原因是通过SSH运行selenium,在这种情况下,您的RPi将没有可连接firefox窗口的显示器,它将崩溃,要解决这个问题,您需要在无头模式下运行firefox,如下所示:

    # create a new Firefox session
    opt = webdriver.FirefoxOptions()
    opt.set_headless()
    driver = webdriver.Firefox(options=opt)
    # here instead of maximize you have to set a custom size
    driver.set_window_size(1920, 1080)