Selenium webdriver not working in python with firefox - python

I have the most up to date firefox browser and selenium installed.
I tried running the following code:
from selenium import webdriver
browser = webdriver.Firefox()
...and received the following error:
Traceback (most recent call last):
File "C:\Users\alisy\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium\webdriver\common\service.py", line 76, in start
stdin=PIPE)
File "C:\Users\alisy\AppData\Local\Programs\Python\Python36-32\lib\subprocess.py", line 707, in __init__
restore_signals, start_new_session)
File "C:\Users\alisy\AppData\Local\Programs\Python\Python36-32\lib\subprocess.py", line 992, in _execute_child
startupinfo)
FileNotFoundError: [WinError 2] The system cannot find the file specified
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\alisy\AppData\Local\Programs\Python\Python36-32\download2.py", line 3, in <module>
browser = webdriver.Firefox()
File "C:\Users\alisy\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium\webdriver\firefox\webdriver.py", line 152, in __init__
self.service.start()
File "C:\Users\alisy\AppData\Local\Programs\Python\Python36-32\lib\site-packages\selenium\webdriver\common\service.py", line 83, in start
os.path.basename(self.path), self.start_error_message)
selenium.common.exceptions.WebDriverException: Message: 'geckodriver' executable needs to be in PATH.
I have downloaded geckodriver and specified the location in PATH (and then restarted my laptop). Did the same for firefox. It made no difference.
What should I do?

This line of code solves the problem for me
driver=webdriver.Firefox(executable_path="c:/drivers/geckodriver.exe")

Related

Starting firefox-selenium macos

I've been trying to start selenium with Firefox with python but if I understand the Error message correctly it can't find the file. I've tried to find an answer to this, but every "answer" I find is on another operating system and doesn't have to do with my problem.
I have Firefox installed and Selenium.
In the shell I enter:
from selenium import webdriver
browser = webdriver.Firefox()
and it returns:
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/selenium/webdriver/common/service.py", line 76, in start
stdin=PIPE)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/subprocess.py", line 707, in init
restore_signals, start_new_session)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/subprocess.py", line 1326, in _execute_child
raise child_exception_type(errno_num, err_msg)
FileNotFoundError: [Errno 2] No such file or directory: 'geckodriver'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "", line 1, in
browser = webdriver.Firefox()
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/selenium/webdriver/firefox/webdriver.py", line 152, in init
self.service.start()
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/selenium/webdriver/common/service.py", line 83, in start
os.path.basename(self.path), self.start_error_message)
selenium.common.exceptions.WebDriverException: Message: 'geckodriver' executable needs to be in PATH.

Running selenium webdriver in AWS EC2 linux

I installed selenium on Amazon Linux AMI. I try to use python to activate it.
The error show up. I do not know what is supposed to mean. Can chrome webdriver run on that environment.
My code
from selenium import webdriver
driver = webdriver.Chrome("/home/ec2-user/dlfjj/bin/chromedriver")
Error
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/ec2-user/dlfjj/local/lib/python2.7/site-packages/selenium/webdriver/chrome/webdriver.py", line 62, in __init__
self.service.start()
File "/home/ec2-user/dlfjj/local/lib/python2.7/site-packages/selenium/webdriver/common/service.py", line 86, in start
os.path.basename(self.path), self.start_error_message)
selenium.common.exceptions.WebDriverException: Message: 'chromedriver' executable may have wrong permissions. Please see https://sites.google.com/a/chromium.org/chromedriver/home`
update:
There is new error.
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/ec2-user/dlfjj/local/lib/python2.7/site-packages/selenium/webdriver/chrome/webdriver.py", line 62, in __init__
self.service.start()
File "/home/ec2-user/dlfjj/local/lib/python2.7/site-packages/selenium/webdriver/common/service.py", line 96, in start
self.assert_process_still_running()
File "/home/ec2-user/dlfjj/local/lib/python2.7/site-packages/selenium/webdriver/common/service.py", line 109, in assert_process_still_running
% (self.path, return_code)
selenium.common.exceptions.WebDriverException: Message: Service /home/ec2-user/dlfjj/bin/chromedriver unexpectedly exited. Status code was: 127
The error states ...
'chromedriver' executable may have wrong permissions
... which means that it cannot be executed. It should work if you add the execute bit in the EC2 instance
$ chmod +x /home/ec2-user/dlfjj/bin/chromedriver

Launching the browser using SPLINTER throws error

Hi I have tried to run the code which is used to open a browser, enter URL and close the browser(https://splinter.readthedocs.io/en/latest/) using SPLINTER in python. The sample code in the above URL is what I tried.
I got the following errors:
C:\Users\irgfff\Desktop>python browse.py
Traceback (most recent call last):
File "C:\Users\irgfff\AppData\Local\Programs\Python\Python36-32\lib\site-
packa
ges\selenium\webdriver\common\service.py", line 74, in start
stdout=self.log_file, stderr=self.log_file)
File "C:\Users\irgfff\AppData\Local\Programs\Python\Python36-
32\lib\subprocess
.py", line 707, in __init__
restore_signals, start_new_session)
File "C:\Users\irgfff\AppData\Local\Programs\Python\Python36-
32\lib\subprocess
.py", line 990, in _execute_child
startupinfo)
FileNotFoundError: [WinError 2] The system cannot find the file specified
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "browse.py", line 4, in <module>
with Browser() as browser:
File "C:\Users\irgfff\AppData\Local\Programs\Python\Python36-32\lib\site-
packa
ges\splinter\browser.py", line 63, in Browser
return driver(*args, **kwargs)
File "C:\Users\irgfff\AppData\Local\Programs\Python\Python36-32\lib\site-
packa
ges\splinter\driver\webdriver\firefox.py", line 48, in __init__
timeout=timeout)
File "C:\Users\irgfff\AppData\Local\Programs\Python\Python36-32\lib\site-
packa
ges\selenium\webdriver\firefox\webdriver.py", line 142, in __init__
self.service.start()
File "C:\Users\irgfff\AppData\Local\Programs\Python\Python36-32\lib\site-
packa
ges\selenium\webdriver\common\service.py", line 81, in start
os.path.basename(self.path), self.start_error_message)
selenium.common.exceptions.WebDriverException: Message: 'geckodriver'
executable needs to be in PATH.
Could you let me know what I need to configure to avoid these errors ?
I am using Python 3.6.1
Firefox Version - 52
SPLINTER version 0.7.5
I have solved this problem. You must add PATH the location of geckodriver and webdriver.
You can download geckodriver(https://github.com/mozilla/geckodriver/releases) here.
good luck

Error when trying to capture screenshot of a webpage using Python on Windows

I'm getting an error when trying to capture a screenshot of a webpage in Python 3.6. Tried following other posts where the same question was posed, but none of it helped. Please guide as in where I'm going wrong. Thanks.
Code:
from selenium import webdriver
driver = webdriver.Firefox()
driver.get('http://www.python.org/')
driver.save_screenshot('python_org.png')
driver.quit()
Error:
Traceback (most recent call last):
File "C:\Python36-32\lib\site- packages\selenium\webdriver\common\service.py", line 74, in start
stdout=self.log_file, stderr=self.log_file)
File "C:\Python36-32\lib\subprocess.py", line 707, in __init__
restore_signals, start_new_session)
File "C:\Python36-32\lib\subprocess.py", line 990, in _execute_child
startupinfo)
FileNotFoundError: [WinError 2] The system cannot find the file specified
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "D:/screen_capture_3.py", line 3, in <module>
driver = webdriver.Firefox()
File "C:\Python36-32\lib\site- packages\selenium\webdriver\firefox\webdriver.py", line 145, in __init__
self.service.start()
File "C:\Python36-32\lib\site-packages\selenium\webdriver\common\service.py", line 81, in start
os.path.basename(self.path), self.start_error_message)
selenium.common.exceptions.WebDriverException: Message: 'geckodriver' executable needs to be in PATH.

Using Selenium on Raspberry Pi with Chromium

So I'm trying to run Selenium on my raspberry pi using Chromium and for some reason I can't get my python file to compile. I keep getting the following error:
Traceback (most recent call last):
File "test.py", line 4, in <module>
driver = webdriver.Chrome(os.path.expanduser('/usr/bin/chromedriver.exe'))
File "/usr/local/lib/python2.7/dist-packages/selenium-2.46.0-py2.7.egg/selenium/webdriver/chrome/webdriver.py", line 62, in __init__
self.service.start()
File "/usr/local/lib/python2.7/dist-packages/selenium-2.46.0-py2.7.egg/selenium/webdriver/chrome/service.py", line 75, in start
os.path.basename(self.path), docs_msg)
selenium.common.exceptions.WebDriverException: Message: 'chromedriver.exe' executable needs to be in PATH. Please see https://sites.google.com/a/chromium.org/chromedriver/home
Here is the python code I'm trying to run:
from selenium import webdriver
import os
driver = webdriver.Chrome(os.path.expanduser('/usr/bin/chromedriver'))
driver.get("http://www.google.com")
driver.quit()
Any ideas?
Update
After removing the '.exe' at the end of chromedriver, it now produces the following error:
Traceback (most recent call last):
File "test.py", line 4, in <module>
driver = webdriver.Chrome(os.path.expanduser('/usr/bin/chromedriver'))
File "/usr/local/lib/python2.7/dist-packages/selenium-2.46.0-py2.7.egg/selenium/webdriver/chrome/webdriver.py", line 62, in __init__
self.service.start()
File "/usr/local/lib/python2.7/dist-packages/selenium-2.46.0-py2.7.egg/selenium/webdriver/chrome/service.py", line 68, in start
self.service_args, env=env, stdout=PIPE, stderr=PIPE)
File "/usr/lib/python2.7/subprocess.py", line 679, in __init__
errread, errwrite)
File "/usr/lib/python2.7/subprocess.py", line 1259, in _execute_child
raise child_exception
OSError: [Errno 8] Exec format error
Ubuntu has builds of chromium-chromedriver as .deb files for armhf.
On launchpad, therefore, you can find chromium-chromedriver armhf builds available for download. Just download the latest version, and since they have no dependencies, you can install by running dpkg -i chromium-chromedriver_58.0.3029.96-0ubuntu0.14.04.1174_armhf.deb. Then chromedriver will be available in /usr/lib/chromium-browser/chromedriver.
At the moment Chrome Driver dont support ARM processors architecture anymore.
https://www.raspberrypi.org/forums/viewtopic.php?f=63&t=95322

Categories