Starting firefox-selenium macos - python

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.

Related

'chromedriver' executable needs to be in PATH in py file

I am facing a weird problem when opening selenium from .py files but no issue from terminal
terminal
driver = webdriver.Chrome(executable_path='/home/timmy/chromedriver') #Works
.py file
driver = webdriver.Chrome(executable_path='/home/timmy/chromedriver',) #options=options)
Traceback (most recent call last):
File "/home/timmy/.local/lib/python3.8/site-packages/selenium/webdriver/common/service.py", line 72, in start
self.process = subprocess.Popen(cmd, env=self.env,
File "/usr/lib/python3.8/subprocess.py", line 854, in __init__
self._execute_child(args, executable, preexec_fn, close_fds,
File "/usr/lib/python3.8/subprocess.py", line 1702, in _execute_child
raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] No such file or directory: 'chromedriver'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/timmy/email/google.py", line 34, in shot
driver = webdriver.Chrome(executable_path='/home/timmy/chromedriver',) #options=options)
File "/home/timmy/.local/lib/python3.8/site-packages/selenium/webdriver/chrome/webdriver.py", line 73, in __init__
self.service.start()
File "/home/timmy/.local/lib/python3.8/site-packages/selenium/webdriver/common/service.py", line 81, in start
raise WebDriverException(
selenium.common.exceptions.WebDriverException: Message: 'chromedriver' executable needs to be in PATH. Please see https://sites.google.com/a/chromium.org/chromedriver/home
I had some options when launching it in py file (headless, size...) I thought it affected it but still the same issue after I removed the options.
any help is appreciated
make sure chromedriver.exe is copied into the folder specified by executable_path
, try to provide full path and add the exe extension to chromedriver.
for example: driver = webdriver.Chrome(executable_path=r'C:\home\timmy\chromedriver.exe')

'phantomjs' executable may have wrong permissions

This script works fine on Google Cloud Service. But i get error on Amazon Web Service EC2: (operation system: linux 64bit)
selenium.common.exceptions.WebDriverException: Message: 'phantomjs' executable may have wrong permissions.
Full Code:
/usr/local/lib/python3.7/site-packages/selenium/webdriver/phantomjs/webdriver.py:49: UserWarning: Selenium support for PhantomJS has been deprecated, please use headless versions of Chrome or Firefox instead
warnings.warn('Selenium support for PhantomJS has been deprecated, please use headless '
Traceback (most recent call last):
File "/usr/local/lib/python3.7/site-packages/selenium/webdriver/common/service.py", line 76, in start
stdin=PIPE)
File "/usr/lib64/python3.7/subprocess.py", line 756, in __init__
restore_signals, start_new_session)
File "/usr/lib64/python3.7/subprocess.py", line 1499, in _execute_child
raise child_exception_type(errno_num, err_msg, err_filename)
PermissionError: [Errno 13] Permission denied: '/usr/local/share/phantomjs-2.1.1-linux-x86_64/bin/phantomjs'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "turkish.py", line 114, in <module>
bot = TransBot()
File "turkish.py", line 13, in __init__
self.driver = webdriver.PhantomJS(executable_path='/usr/local/share/phantomjs-2.1.1-linux-x86_64/bin/phantomjs')
File "/usr/local/lib/python3.7/site-packages/selenium/webdriver/phantomjs/webdriver.py", line 56, in __init__
self.service.start()
File "/usr/local/lib/python3.7/site-packages/selenium/webdriver/common/service.py", line 88, in start
os.path.basename(self.path), self.start_error_message)
selenium.common.exceptions.WebDriverException: Message: 'phantomjs' executable may have wrong permissions.
I try move '/usr/local/bin' and '/usr/local/share' phantomjs file. Same error. What do you suggest? Sorry my english.
change the permissions so it is executable.
$ chmod a+x phantomsjs
Grant full permission to the phantomjs file :
sudo chmod a+rwx phantomjs

Selenium webdriver not working in python with firefox

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")

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.

Categories