【问题标题】:launch selenium from python on ubuntu在 ubuntu 上从 python 启动 selenium
【发布时间】:2017-01-21 12:45:23
【问题描述】:

我有以下脚本

from selenium import webdriver

browser = webdriver.Firefox()
browser.get('http://localhost:8000')

assert 'Django' in browser.title

我收到以下错误

$ python3 functional_tests.py 
Traceback (most recent call last):   File "functional_tests.py", line 3, in <module>
    browser = webdriver.Firefox()   File "/usr/local/lib/python3.5/dist-packages/selenium/webdriver/firefox/webdriver.py", line 80, in __init__
    self.binary, timeout)   File "/usr/local/lib/python3.5/dist-packages/selenium/webdriver/firefox/extension_connection.py", line 52, in __init__
    self.binary.launch_browser(self.profile, timeout=timeout)   File "/usr/local/lib/python3.5/dist-packages/selenium/webdriver/firefox/firefox_binary.py", line 68, in launch_browser
    self._wait_until_connectable(timeout=timeout)   File "/usr/local/lib/python3.5/dist-packages/selenium/webdriver/firefox/firefox_binary.py", line 99, in _wait_until_connectable
    "The browser appears to have exited " selenium.common.exceptions.WebDriverException: Message: The browser appears to have exited before we could connect. If you specified a log_file in the FirefoxBinary constructor, check it for details.

pip3 list 显示selenium (2.53.6)

firefox -v 显示Mozilla Firefox 47.0

【问题讨论】:

  • 听起来像是兼容性问题:您安装了哪些 firefox 和 selenium 版本?
  • 最新版本的 Firefox 无法与 selenium 一起正常工作。试试 46 或 45。你可以在这里下载ftp.mozilla.org/pub/firefox/releases
  • 做到了。 sudo apt-get install firefox=45.0.2+build1-0ubuntu1 降级。 @TalesPádua 如果您将其写为答案,我很乐意将其作为正确答案。
  • @HarryMoreno,完成! =)

标签: python selenium ubuntu


【解决方案1】:

最新版本的 Firefox 无法与 selenium 一起正常工作。试试 46 或 45。

你可以在这里下载:ftp.mozilla.org/pub/firefox/releases

sudo apt-get install firefox=45.0.2+build1-0ubuntu1

您也可以按照此处http://www.howtogeek.com/117929/how-to-downgrade-packages-on-ubuntu/ 所示以图形方式执行此操作

【讨论】:

    【解决方案2】:

    我也遇到过这个问题,我对不得不使用旧版本的 Firefox 感到不满。这是我使用最新版本 Firefox 的解决方案。然而,它涉及几个步骤

    第 1 步。 从以下位置下载 v0.9.0 Marionette,即下一代 FirefoxDriver:https://github.com/mozilla/geckodriver/releases/download/v0.9.0/geckodriver-v0.9.0-linux64.tar.gz

    第 2 步。 将文件解压缩到所需的文件夹,并将其重命名为“wires”。就我而言,我在 Documents 下创建了一个名为“add_to_system_path”的文件夹。所以文件在 Documents/add_to_system_path/wires 中(还要确保wires文件在其属性下是可执行的)

    第 3 步。 在您的主文件夹下创建一个名为“.pam_environment”的文件,然后在其上添加这一行并保存

    PATH DEFAULT=${PATH}:/absolute/path/to/the/folder/where/wires/is/saved

    它的作用是告诉 ubuntu 将 .pam_environment 中的枚举目录添加到您的系统路径中

    第 4 步。 保存文件,退出用户会话,然后重新登录。这样做是为了让 ubuntu 识别新添加的系统路径中的文件 p>

    第 5 步。 使用下面的代码来实例化浏览器实例:

    `
    from selenium import webdriver
    from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
    
    capabilities = DesiredCapabilities.FIREFOX
    capabilities["marionette"] = True
    browser = webdriver.Firefox(capabilities=capabilities)
    browser.get('http://your-target-url')`
    

    Firefox 现在应该可以像往常一样实例化了。

    【讨论】:

    • 好故事!感谢您来到这里分享!
    • 不客气。希望有些人觉得这个解决方案有帮助。
    • 这个答案随着 selenium 3.x 的发布而过时。
    猜你喜欢
    • 2011-11-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-01
    • 1970-01-01
    • 2016-04-21
    • 2017-03-12
    • 2011-08-01
    • 1970-01-01
    相关资源
    最近更新 更多