Issues running ChromeDriver and FirefoxDriver with Selenium - python

Tried adding the drivers to the right path. mentioned the path in the code and yet getting runtime errors with chromedriver. Cannot see what is wrong with the code. whats wrong?
Tried adding the path to the code. imported selenium and webdriver. placed the drivers in the python directory.
from selenium import webdriver
#to open the page in Chrome.firefox
driver = webdriver.Chrome("executable_path=D:\Python\Crawler\chromedriver_win32")
driver.get("http://econpy.pythonanywhere.com/ex/001.html")
given Below are the errors:
D:\Python\Crawler\venv\Scripts\python.exe D:/Python/Crawler/crawler_sel.py
Traceback (most recent call last):
File "D:\Python\Crawler\venv\lib\site-packages\selenium\webdriver\common\service.py", line 76, in start
stdin=PIPE)
File "C:\Users\vidwa\AppData\Local\Programs\Python\Python37-32\lib\subprocess.py", line 775, in __init__
restore_signals, start_new_session)
File "C:\Users\vidwa\AppData\Local\Programs\Python\Python37-32\lib\subprocess.py", line 1178, 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:/Python/Crawler/crawler_sel.py", line 5, in <module>
driver = webdriver.Chrome("executable_path=D:\Python\Crawler\chromedriver_win32")
File "D:\Python\Crawler\venv\lib\site-packages\selenium\webdriver\chrome\webdriver.py", line 73, in __init__
self.service.start()
File "D:\Python\Crawler\venv\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: 'chromedriver_win32' executable needs to be in PATH. Please see https://sites.google.com/a/chromium.org/chromedriver/home
Process finished with exit code 1

Try the below this worked for me
from selenium import webdriver
#to open the page in Chrome.firefox
def set_up(self):
self.driver = webdriver.Chrome("D:/Python/Crawler/chromedriver_win32.exe")

Your syntax here is off. It should be:
driver = webdriver.Chrome(executable_path='D:/Python/Crawler/chromedriver_win32.exe')
I've taken quotation marks off executable_path, and added .exe extension to your file path.
Alternative solution -- If you do not want to use executable_path, you can try adding chromedriver_win32.exe to your Path variable:
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("http://econpy.pythonanywhere.com/ex/001.html")
Then, in your environment variable for Path, you have something like:
D:\Python\Crawler\chromedriver_win32.exe
This guide may help you with the Path part: https://developers.refinitiv.com/sites/default/files/How%20To%20Add%20ChromeDriver%20To%20System%20Variables_0.pdf

Related

unable to run basic Py program in Pycharm with Selenium

I'm very new to coding. Trying to run the below basic lines from past 20 days, and getting the below error. Kindly help. Tried installing uninstalling python, selenium & pycharm. still same issue :(
My code:
from selenium import webdriver
browser = webdriver.Chrome(executable_path = 'C:\Program Files (x86)\Google\Chrome\Application')
browser.get('https://www.google.com')
browser.quit()
Error -
"C:\Python 3.7.6\python.exe" C:/Users/PycharmProjects/sel/sel1.py
Traceback (most recent call last):
File "C:\Python 3.7.6\lib\site-packages\selenium\webdriver\common\service.py", line 76, in start
stdin=PIPE)
File "C:\Python 3.7.6\lib\subprocess.py", line 800, in __init__
restore_signals, start_new_session)
File "C:\Python 3.7.6\lib\subprocess.py", line 1207, in _execute_child
startupinfo)
PermissionError: [WinError 5] Access is denied
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:/Users/PycharmProjects/sel/sel1.py", line 2, in <module>
browser = webdriver.Chrome(executable_path = 'C:\Program Files (x86)\Google\Chrome\Application')
File "C:\Python 3.7.6\lib\site-packages\selenium\webdriver\chrome\webdriver.py", line 73, in __init__
self.service.start()
File "C:\Python 3.7.6\lib\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: 'Application' executable may have wrong permissions. Please see https://sites.google.com/a/chromium.org/chromedriver/home
Process finished with exit code 1
Thanks in advance.
Your executable path is deeply problematic. The error being thrown show that your programs access to the chrome driver is being blocked. Change the position of the chrome driver to somewhere else(desktop, user directory etc) and change the executable path in your code to the new path where you put your chromedriver and you should be okay

Selenium webdriver permission problem in linux persists

I would like to see the capabilities of selenium which is controlled by a python script. I downloaded the geckodriver executable and put it in some directory. I use a linux and I try run the below code through a virtualenv:
from selenium import webdriver
path = '/home/devel-20/Desktop/devel/programs'
driver = webdriver.Firefox(executable_path=path)
However, I get this error message:
Traceback (most recent call last):
File "/home/devel-20/Desktop/devel/virtualenvs/restaurant/lib/python3.6/site-packages/selenium/webdriver/common/service.py", line 76, in start
stdin=PIPE)
File "/usr/lib/python3.6/subprocess.py", line 709, in __init__
restore_signals, start_new_session)
File "/usr/lib/python3.6/subprocess.py", line 1344, in _execute_child
raise child_exception_type(errno_num, err_msg, err_filename)
PermissionError: [Errno 13] Permission denied: '/home/devel-20/Desktop/devel/programs'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/devel-20/Desktop/devel/projects/r/shop/selenium_tests", line 5, in <module>
driver = webdriver.Firefox(executable_path=path)
File "/home/devel-20/Desktop/devel/virtualenvs/restaurant/lib/python3.6/site-packages/selenium/webdriver/firefox/webdriver.py", line 164, in __init__
self.service.start()
File "/home/devel-20/Desktop/devel/virtualenvs/restaurant/lib/python3.6/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: 'programs' executable may have wrong permissions.
I'm confused because I'm running this with a user called "devel-20". This is the permissions of the programs directory:
drwxrwxr-x 4 devel-20 devel-20 4096 Sep 27 07:04 programs/
And this is the permissions of the geckodriver file:
-rwxrwxr-x 1 devel-20 devel-20 12184306 Sep 16 01:48 geckodriver*
I don't understand why this permissions problem persists.
Could you give me some guidance?
Thanks a lot in advance!
The path you're referring to is not right. It should denote the geckodriver binary to use for Firefox.
An alternative approach, considering your firefox installation path is this one:
from selenium import webdriver
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary
firefox_binary = FirefoxBinary('/usr/bin/firefox')
driver = webdriver.Firefox(firefox_binary=firefox_binary)
Thanks for the response. It works fine now, using this code:
from selenium import webdriver
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary
firefox_binary = FirefoxBinary('/usr/bin/firefox')
driver = webdriver.Firefox(firefox_binary=firefox_binary)
However, I added "geckodriver" to the following folder:
/home/devel-20/Desktop/virtualenvs/restaurant/bin
This folder is in $PATH in this virtualenv. If not added to a folder which the local $PATH knows about, there will be the well-known selenium/geckodriver PATH problem.

selenium.common.exceptions.WebDriverException: Message: 'geckodriver' executable needs to be in PATH with GeckoDriver Selenium Firefox

I don't know Pycharm - or Python well enough to troubleshoot just what went wrong. It seems top me as if this simply bit of code should execute but I get a jumble of text that says nothing to me.
Anyone else using Selenium get this error and know how to fix it?
The physical code -
"C:\Users\Noah Linton\PycharmProjects\EdgenuityBot\venv\Scripts\python.exe"
"C:/Users/Noah Linton/PycharmProjects/EdgenuityBot/Edgenuity Bot"
Traceback (most recent call last):
File "C:\Users\Noah Linton\PycharmProjects\EdgenuityBot\venv\lib\site-
packages\selenium\webdriver\common\service.py", line 76, in start
stdin=PIPE)
File "C:\Program Files (x86)\Microsoft Visual
Studio\Shared\Python36_64\Lib\subprocess.py", line 709, in __init__
restore_signals, start_new_session)
File "C:\Program Files (x86)\Microsoft Visual
Studio\Shared\Python36_64\Lib\subprocess.py", line 997, 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/Noah Linton/PycharmProjects/EdgenuityBot/Edgenuity Bot", line
3, in <module>
driver = webdriver.Firefox()
File "C:\Users\Noah Linton\PycharmProjects\EdgenuityBot\venv\lib\site-
packages\selenium\webdriver\firefox\webdriver.py", line 148, in __init__
self.service.start()
File "C:\Users\Noah Linton\PycharmProjects\EdgenuityBot\venv\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.
Process finished with exit code 1
The executive code
from selenium import webdriver
driver = webdriver.Firefox()
driver.get("https://auth.edgenuity.com/Login/Login/Student")
button = driver.find_element_by_id('LoginSubmit')
button.click()
The error says it all :
selenium.common.exceptions.WebDriverException: Message: 'geckodriver' executable needs to be in PATH.
Which implies that GeckoDriver binary is not in the Classpath
While working with Selenium v3.x you have to download the latest GeckoDriver from this url and store it in your system and mention the absolute path while initiating the webdriver and Web Browser session as follows :
from selenium import webdriver
driver = webdriver.Firefox(executable_path="C:\\path\\to\\geckodriver.exe")
driver.get("https://auth.edgenuity.com/Login/Login/Student")
button = driver.find_element_by_id('LoginSubmit')
button.click()
For what little help it might be, the critical parts of the traceback are
FileNotFoundError: [WinError 2] The system cannot find the file specified
line 3, in <module>
driver = webdriver.Firefox()
selenium.common.exceptions.WebDriverException: Message: 'geckodriver'
executable needs to be in PATH.
It seems that the Firefox webdriver isn't in the defined search path that your main program sees. There's something called geckodriver that isn't available.
Check your installation and configuration for this package. Consult with your class instructors and classmates for help. I suspect that the repair is something with your local set-up, beyond our knowledge here.

FileNotFoundError: [WinError 2] The system cannot find the file specified though the exact same file worked previously

I have a python script that previously worked fine but now errors, so I am not sure what happened. I am getting the error that:
C:\Users\663255\Desktop>PMI_Tests.py
Traceback (most recent call last):
File "C:\Users\663255\AppData\Local\Programs\Python\Python36\lib\site-packages\selenium\webdriver\common\service.py", line 74, in start
stdout=self.log_file, stderr=self.log_file)
File "C:\Users\663255\AppData\Local\Programs\Python\Python36\lib\subprocess.py", line 707, in __init__
restore_signals, start_new_session)
File "C:\Users\663255\AppData\Local\Programs\Python\Python36\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 "C:\Users\663255\Desktop\PMI_Tests.py", line 14, in <module>
driver = webdriver.Firefox(firefox_binary=binary, executable_path=gecko+'.exe')
File "C:\Users\663255\AppData\Local\Programs\Python\Python36\lib\site-packages\selenium\webdriver\firefox\webdriver.py", line 142, in __init__
self.service.start()
File "C:\Users\663255\AppData\Local\Programs\Python\Python36\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.exe' executable needs to be in PATH.
The start of the file looks like:
import unittest
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import os
import time
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary
from selenium.webdriver.common.action_chains import ActionChains
from urllib.request import urlopen
from html.parser import HTMLParser
gecko = os.path.normpath(os.path.join(os.path.dirname(__file__), 'geckodriver'))
binary = FirefoxBinary('C:\Program Files (x86)\Mozilla Firefox\Firefox.exe')
driver = webdriver.Firefox(firefox_binary=binary, executable_path=gecko+'.exe')
class PythonOrgSearch(unittest.TestCase):
#sets up driver to run tests
def setUp(self):
self.driver = driver
I am unsure why the file stopped working, as it had worked previously many times before. also, both python and geckodriver are definitely defined in the path, but when run via the terminal it says that geckodriver is not in the path.
I have a feeling the issue has to do with the way geckodriver (i.e. gecko variable) is defined in a weird way in the code, or something like that. I have viewed other stack overflow posts with similar problems but have not found anything that fixed my problem. I am using Python 3.6.2 if that is helpful. Any insight would be awesome. Thank you!
As a solution to this problem, I hardcoded the full path to geckodriver in the gecko variable, instead of trying to dynamically locate it. I am unsure why the dynamic approach stopped working, but hardcoding the filepath fixed any issues for me.

selenium wont work with Firefox or Chrome

I am trying to learn python web scraping, but I cannot get selenium to work with either browser.
from selenium import webdriver
browser = webdriver.Firefox()
This is all the code I have and I get this for a error.
Traceback (most recent call last):
File "C:\Users\tjhall\AppData\Local\Programs\Python\Python35-32\lib\site-packages\selenium\webdriver\common\service.py", line 64, in start
stdout=self.log_file, stderr=self.log_file)
File "C:\Users\tjhall\AppData\Local\Programs\Python\Python35-32\lib\subprocess.py", line 950, in __init__
restore_signals, start_new_session)
File "C:\Users\tjhall\AppData\Local\Programs\Python\Python35-32\lib\subprocess.py", line 1220, 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 "H:\codingpractice\python\python challenge.com.py", line 2, in <module>
browser = webdriver.Firefox()
File "C:\Users\tjhall\AppData\Local\Programs\Python\Python35-32\lib\site-packages\selenium\webdriver\firefox\webdriver.py", line 135, in __init__
self.service.start()
File "C:\Users\tjhall\AppData\Local\Programs\Python\Python35-32\lib\site-packages\selenium\webdriver\common\service.py", line 71, in start
os.path.basename(self.path), self.start_error_message)
selenium.common.exceptions.WebDriverException: Message: 'geckodriver' executable needs to be in PATH.
Exception ignored in: <bound method Service.__del__ of <selenium.webdriver.firefox.service.Service object at 0x00A11350>>
Traceback (most recent call last):
File "C:\Users\tjhall\AppData\Local\Programs\Python\Python35-32\lib\site-packages\selenium\webdriver\common\service.py", line 163, in __del__
self.stop()
File "C:\Users\tjhall\AppData\Local\Programs\Python\Python35-32\lib\site-packages\selenium\webdriver\common\service.py", line 135, in stop
if self.process is None:
AttributeError: 'Service' object has no attribute 'process'
I have tried everything I can find on the internet from adding the path to the code
from selenium import webdriver
browser = webdriver.Firefox("C:\Program Files (x86)\Mozilla Firefox\firefox.exe")
to adding it the the PATH in my environment variables. I can't seem to figure this out...
For both Firefox and Chrome you now need to download geckodriver / chromedriver.These drivers are necessary to communicate between your installed browser and selenium. So you need:
Install selenium for python (pip install selenium)
Download drivers for the browser you want to use (chromedriver, geckodriver, operadriver etc)
Install the browser you want to use on your system (probably already have this)
Now you can add the geckodriver to your path as metioned in this anwser. Or you can set it up directly in your code like this:
Chome:
driver = webdriver.Chrome(executable_path='/path/to/chromedriver.exe')
Firefox:
driver = webdriver.Firefox(executable_path='/opt/geckoDriver/geckodriver.exe')
According to the line in your message
selenium.common.exceptions.WebDriverException: Message: 'geckodriver' executable needs to be in PATH.
you do not have geckodriver.exe. You need to download it from enter link description here, put exe in the directory where Python script is located and try code below:
Please try this code:
# -*- coding: utf-8 -*-
from selenium import webdriver
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary
gecko = os.path.normpath(os.path.join(os.path.dirname(__file__), 'geckodriver'))
binary = FirefoxBinary(r'C:\Program Files (x86)\Mozilla Firefox\firefox.exe')
browser = webdriver.Firefox(firefox_binary=binary,executable_path=gecko+'.exe')
browser.get('http:///www.google.com')
browser.close()

Categories

Resources