I installed python3-selenium apt package on Ubuntu 16.04. While installing, got a message:
Suggested packages:
chromedriver firefoxdriver
The following NEW packages will be installed:
python3-selenium
When I try to run the following python code,
#! /usr/bin/python3.5
from selenium import webdriver
import time
def get_profile():
profile = webdriver.FirefoxProfile()
profile.set_preference("browser.privatebrowsing.autostart", True)
return profile
def main():
browser = webdriver.Firefox(firefox_profile=getProfile())
#browser shall call the URL
browser.get("http://www.google.com")
time.sleep(5)
browser.quit()
if __name__ == "__main__":
main()
I get the following error:
Traceback (most recent call last): File "./test.py", line 19, in main() File "./test.py", line 11, in main browser = webdriver.Firefox(firefox_profile=getProfile()) File "/usr/lib/python3/dist-packages/selenium/webdriver/firefox /webdriver.py", line 77, in init self.binary, timeout), File "/usr/lib/python3/dist-packages/selenium/webdriver/firefox/extension_connection.py", line 47, in init self.profile.add_extension() File "/usr/lib/python3/dist-packages/selenium/webdriver/firefox/firefox_profile.py", line 91, in add_extension self._install_extension(extension) File "/usr/lib/python3/dist-packages/selenium/webdriver/firefox/firefox_profile.py", line 251, in _install_extension compressed_file = zipfile.ZipFile(addon, 'r') File "/usr/lib/python3.5/zipfile.py", line 1009, in init self.fp = io.open(file, filemode) FileNotFoundError: [Errno 2] No such file or directory: '/usr/lib /firefoxdriver/webdriver.xpi'
I did searching for packages name firefoxdriver in Ubuntu repositories but none exist. How do I solve this problem?
Any help with installing the webdrivers appreciated!
The package you are missing is called firefox-geckodriver
. You can get it via sudo apt-get install firefox-geckodriver
or by downloading from https://github.com/mozilla/geckodriver/releases , putting it into your $PATH
(for example /usr/bin
) and making it executable.
I'm not certain if this will fix the issue you're having, but you can give it a try. But first, to answer the question as to where you can download firefoxdriver, my answer would be maybe firefoxdriver is not available, because the file is now called geckodriver, but it's really called Marionette Driver. It's described here: https://developer.mozilla.org/en-US/docs/Mozilla/QA/Marionette/WebDriver , and it's made available here https://github.com/mozilla/geckodriver/releases
That answers the question, I believe, however I'd like to try to address the issue you're having.
My understanding of your issue: You're trying to spawn an instance of firefox, through selenium, but it's not working.
My hypothesis as to why it's not working: Maybe you're using Firefox 47 or newer. If you're looking for where to downlad the new 'firefoxdriver' (its called the Marionette Driver, but the file is called geckodriver), you'll have to download the file directly from its github release page: https://github.com/mozilla/geckodriver/releases (I suggest downloading v0.9.0, since v0.10.0 hasn't worked for me).
If you're using Firefox 47 or newer, then starting up Firefox browser with a simple browser = webdriver.Firefox()
just isn't going to work. This used to work for Firefox 46, and I'm assuming older versions, however it no longer works because support for Firefox Webdriver has now been dropped. You now have to download the new Marionette driver, and modify your code a bit to make it work with this new driver. You can learn more about Marionette in the link I provided above.
The solutions I'm proposing You can either:
or
If you choose option #1, then simply find a way to downgrade to Firefox 46.
If however you want your code to work with the most recent release of Firefox, then you choose option #2 and the basic gist of how to accomplish that is as follows:
The specific step by step process (for ubuntu) can be found in this stackoverflow answer launch selenium from python on ubuntu
selenium should be able to spawn firefox normally once that's done.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.