Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

unable to call firefox from selenium in python on AWS machine

I am trying to use selenium from python to scrape some dynamics pages with javascript. However, I cannot call firefox after I followed the instruction of selenium on the pypi page(http://pypi.python.org/pypi/selenium). I installed firefox on AWS ubuntu 12.04. The error message I got 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 did search on the web and found that this problem happened with other people (https://groups.google.com/forum/?fromgroups=#!topic/selenium-users/21sJrOJULZY). But I don't understand the solution, if it is.

Can anyone help me please? Thanks!

like image 471
David Avatar asked Oct 23 '12 21:10

David


People also ask

How do I run Firefox in selenium Python?

How to open/launch firefox in selenium python. Open Mozilla Firefox browser and type in the address bar Firefox://version/ to check browser version to download the compatible version firefox Web driver as per Browser version. unzip and copy geckodriver.exe to the python script directory location.

Does selenium work with Firefox?

Selenium IDE by SeleniumIt is implemented as a Firefox extension, and allows you to record, edit, and debug tests.

How do I run Firefox headless mode in selenium Python?

You can use any Web Browser like Firefox or Chrome in a headless mode. To do so, first open up the Web Browser using the Web Driver and then set it to headless mode. In any case, the web driver needs to be installed.


1 Answers

The problem is Firefox requires a display. I've used pyvirtualdisplay in my example to simulate a display. The solution is:

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-ends: Xvfb, Xephyr, Xvnc.

This should resolve your issue.

like image 85
That1Guy Avatar answered Sep 23 '22 10:09

That1Guy