Failed to call firefox from selenium in python on AWS machine

I am trying to use selenium from python to clear some speaker pages using javascript. However, I cannot name firefox after I followed the selenium instruction on the pypi page (http://pypi.python.org/pypi/selenium). I installed firefox on AWS ubuntu 12.04. The error message I received is:

In [1]: from selenium import webdriver In [2]: br = webdriver.Firefox() --------------------------------------------------------------------------- WebDriverException Traceback (most recent call last) /home/ubuntu/<ipython-input-2-d6a5d754ea44> in <module>() ----> 1 br = webdriver.Firefox() /usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/webdriver.pyc in __init__(self, firefox_profile, firefox_binary, timeout) 49 RemoteWebDriver.__init__(self, 50 command_executor=ExtensionConnection("127.0.0.1", self.profile, ---> 51 self.binary, timeout), 52 desired_capabilities=DesiredCapabilities.FIREFOX) 53 /usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/extension_connection.pyc in __init__(self, host, firefox_profile, firefox_binary, timeout) 45 self.profile.add_extension() 46 ---> 47 self.binary.launch_browser(self.profile) 48 _URL = "http://%s:%d/hub" % (HOST, PORT) 49 RemoteConnection.__init__( /usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/firefox_binary.pyc in launch_browser(self, profile) 42 43 self._start_from_profile_path(self.profile.path) ---> 44 self._wait_until_connectable() 45 46 def kill(self): /usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/firefox_binary.pyc in _wait_until_connectable(self) 79 raise WebDriverException("The browser appears to have exited " 80 "before we could connect. The output was: %s" % ---> 81 self._get_firefox_output()) 82 if count == 30: 83 self.kill() WebDriverException: Message: 'The browser appears to have exited before we could connect. The output was: Error: no display specified\n' 

I searched the Internet and found that this problem occurred with other people (https://groups.google.com/forum/?fromgroups=#!topic/selenium-users/21sJrOJULZY). But I do not understand the solution, if any.

Can anybody help me? Thank!

+27
python selenium amazon-web-services web-scraping screen-scraping
Oct 23 '12 at 21:26
source share
2 answers

The problem is that Firefox requires a display. I used pyvirtualdisplay in my example to simulate a display. Decision:

 from pyvirtualdisplay import Display from selenium import webdriver display = Display(visible=0, size=(1024, 768)) display.start() driver= webdriver.Firefox() driver.get("http://www.somewebsite.com/") <---some code---> #driver.close() # Close the current window. driver.quit() # Quit the driver and close every associated window. display.stop() 

Please note that pyvirtualdisplay requires one of the following back-end: Xvfb, Xephyr, Xvnc.

This should solve your problem.

+50
Oct 24 '12 at 18:27
source share

I had the same problem too. I was on Firefox 47 and Selenium 2.53. So what I did was lower Firefox to 45. It worked.

1) Uninstall Firefox 47 first:

sudo apt-get purge firefox

2) Check available versions:

apt-cache show firefox | grep Version

It will show available versions of firefox, for example:

Version: 47.0+build3-0ubuntu0.16.04.1

Version: 45.0.2+build1-0ubuntu1

3) Tell me which assembly to load

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

4) Then you do not need to upgrade to the new version again.

sudo apt-mark hold firefox

5) If you want to update later

sudo apt-mark unhold firefox sudo apt-get upgrade

Hope this helps.

+4
Jul 11 '16 at 3:44
source share



All Articles