如何修复 Selenium WebDriverException:浏览器似乎在我们连接之前已经退出?

问题描述

我已经在我的 centos6.4 服务器上安装了 firefox 和 Xvfb 来使用 selenium webdriver.

I have installed firefox and Xvfb on my centos6.4 server to use selenium webdriver.

但是,当我运行代码时,我得到了一个错误.

But, when I run the code, I got an error.

from selenium import webdriver
browser = webdriver.Firefox()

错误

selenium.common.exceptions.WebDriverException: Message: 
'The browser appears to have exited before we could connect. The output was: None'

我在 stackoverflow 上阅读了一些相关页面,有人建议删除 tmp 文件夹中的所有文件,所以我做到了.但是还是不行.

I read some related pages on stackoverflow and someone suggested to remove all files in tmp folder, so I did it. But, it still doesn't work.

谁能帮帮我?

提前谢谢你!

编辑

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python3.4/site-packages/selenium/webdriver/firefox/webdriver.py", line 59, in __init__
    self.binary, timeout),
  File "/usr/local/lib/python3.4/site-packages/selenium/webdriver/firefox/extension_connection.py", line 47, in __init__
    self.binary.launch_browser(self.profile)
  File "/usr/local/lib/python3.4/site-packages/selenium/webdriver/firefox/firefox_binary.py", line 64, in launch_browser
    self._wait_until_connectable()
  File "/usr/local/lib/python3.4/site-packages/selenium/webdriver/firefox/firefox_binary.py", line 103, in _wait_until_connectable
    self._get_firefox_output())
selenium.common.exceptions.WebDriverException: Message: 'The browser appears to have exited     before we could connect. The output was: None' 


解决方案

对于 Google 员工来说,这个答案对我不起作用,我不得不使用 这个答案.我正在使用 AWS Ubuntu.

for Googlers, this answer didn't work for me, and I had to use this answer instead. I am using AWS Ubuntu.

基本上,我需要先安装 Xvfb,然后再安装 pyvirtualdisplay:

Basically, I needed to install Xvfb and then pyvirtualdisplay:

sudo apt-get install xvfb
sudo pip install pyvirtualdisplay

一旦我这样做了,这个 python 代码就可以工作了:

Once I had done that, this python code worked:

#!/usr/bin/env python

from pyvirtualdisplay import Display
from selenium import webdriver

display = Display(visible=0, size=(1024, 768))
display.start()

browser = webdriver.Firefox()
browser.get('http://www.ubuntu.com/')
print browser.page_source

browser.close()
display.stop()

感谢@That1Guy 的第一个回答

Thanks to @That1Guy for the first answer

相关文章