在ubuntu上从python启动selenium

时间:2016-09-13 20:00:06

标签: python selenium ubuntu

我有以下脚本

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

2 个答案:

答案 0 :(得分:4)

我也在努力解决这个问题,而且我不得不使用旧版本的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中(同时确保wire文件在其属性下可执行)

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

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

这样做是告诉ubuntu将.pam_environment中的枚举目录添加到系统路径

步骤4。保存文件,注销用户会话,然后重新登录。这样做是必要的,以便ubuntu识别新添加的系统路径中的文件

第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现在应该可以像往常一样实例化。

答案 1 :(得分:0)

最新版本的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/

所示的图形方式执行此操作