Issue with Selenium installation - selenium

I'm facing the following problem.
I'm trying to execute the code:
from time import sleep
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.options import Options
And when I try to run it, the following error is returned:
Exception has occurred: ImportError cannot import name 'Options' from 'selenium.webdriver.common.options'
I've checked other threads but none of them helped me.
I uninstalled selenium and installed again. Also, I double-checked to see if my file name wasn't selenium.py.
Can someone help me on that?
Thank you.

This does not seem like an installation issue.
I presume you mean to write this.
from selenium.webdriver.chrome.options import Options
or
from selenium.webdriver.firefox.options import Options

Related

Some trash in CMD while using selenium webdriver

enter image description hereI made a parser which is working OK in Pycharm, have no troubles and debagger also shows nothing. But when I make an .exe file (I am using pyinstaller to do that) I have some trash in CMD. Script is working OK but this trash is looking awful. Maybe someone can tell me where is the problem
I used this earlier,
from webdriver_manager.chrome import ChromeDriverManager
but now my imports are looking like that:
import csv
import time
from time import sleep as pause
from bs4 import BeautifulSoup
from selenium.webdriver.common.by import By
from selenium import webdriver
import urllib.request

selenium.webdriver.chrome.service gives error message "Module not found"

I am using the code in PyCharm as suggested here: DeprecationWarning: executable_path has been deprecated, please pass in a Service object
but when I do that, I get an error message saying selenium module not found. But the first line of code works, which is also based on the selenium module. Also, I have added selenium as a Python interpreter. I am totally new to this.
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.Chrome.service import Service
s = Service('C:\\Users\\...\\chromedriver.exe')
driver = webdriver.Chrome(service=s)
The module is selenium.webdriver.chrome.service
You need to replace the C (in uppercase) with c (in lowercase) and the effective line of import will be:
from selenium.webdriver.chrome.service import Service

Targetting chrome profile in selenium

Trying to run selenium script with targeted chrome profile. But once I run the script, it won't start with the targeted profile but with a new profile. Here's my code:
# import selenium common driver
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.keys import Keys
import time
# for specified chrome profile
from selenium.webdriver.chrome.options import Options
# wait page until targeted element loaded
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.common.exceptions import TimeoutException
# undetectable module
import undetected_chromedriver.v2 as uc # use pip install undetected-chromedriver
if __name__ == '__main__':
options = uc.ChromeOptions()
# another way to set profile is the below (which takes precedence if both variants are used
options.add_argument(r'--user-data-dir=C:\Users\Fadli\AppData\Local\Google\Chrome\User Data\Profile 4')
# just some options passing in to skip annoying popups
options.add_argument(r'--no-first-run --no-service-autorun --password-store=basic')
driver = uc.Chrome(options=options) # version_main allows to specify your chrome version instead of following chrome global version
driver.get('https://nowsecure.nl')
Try the below line if it help
# another way to set profile is the below (which takes precedence if both variants are used
options.add_argument(r'--user-data-dir=C:\Users\Fadli\AppData\Local\Google\Chrome\User Data')
options.add_argument(r'--profile-directory=Profile 4')
you can check it here for more reference

How to use undetected_chromedriver.v2 in kali linux

How to use undetected_chromedriver.v2 in kali linux
import undetected_chromedriver.v2 as uc
options = uc.ChromeOptions()
# setting profile
options.user_data_dir = "c:\\temp\\profile"
# another way to set profile is the below (which takes precedence if both variants are used
options.add_argument('--user-data-dir=c:\\temp\\profile2')
# just some options passing in to skip annoying popups
options.add_argument('--no-first-run --no-service-autorun --password-store=basic')
bw = uc.Chrome(options=options, version_main=92)
If you are on selenium4 then using undetected_chromedriver.v2 you will face an error as:
TypeError: __init__() got an unexpected keyword argument 'service'
which is inline as per the status:
July 2021: Currently busy implementing selenium 4 for undetected-chromedriver
However with selenium4 you can still use the undetected_chromedriver v1 as follows:
import undetected_chromedriver as uc
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
options = uc.ChromeOptions()
options.add_argument("start-maximized")
s = Service('C:\\BrowserDrivers\\chromedriver.exe')
driver = uc.Chrome(service=s, options=options)
driver.get('https://datadome.co/customers-stories/toppreise-ends-web-scraping-and-content-theft-with-datadome/')
driver.save_screenshot('datadome_undetected_webddriver.png')
References
You can find a couple of relevant detailed discussions in:
Undetected Chromedriver not loading correctly
Evade detection of selenium automation

Chromedriver is not being found: executable needs to be in PATH

I have a windows64 bit machine and I downloaded the chromedriver on the exact location it is supposed to be and my file path is this:
'C:\Users\username\AppData\Local\Google\Chrome\Application\chrome.exe\chromedriver'
Then I wrote this code:
import selenium
from selenium import webdriver
driver=webdriver.Chrome('C:\Users\pushp\AppData\Local\Google\Chrome\Application\chrome.exe\chromedriver')
However, I am getting a file not found error and also this message -
'Message: 'chromedriver' executable needs to be in PATH.'
How do I fix this?
driver =webdriver.Chrome(r'C:\Users\pushp\AppData\Local\Google\Chrome\Application\chrome.exe\chromedriver.exe')
Just need to add .exe
Set it like the following
import selenium
from selenium import webdriver
webdriver.Chrome(executable_path=r"C:\Users\pushp\AppData\Local\Google\Chrome\Application\chromedriver.exe")
Or
webdriver.Chrome(executable_path="C:\\Users\\pushp\\AppData\\Local\\Google\\Chrome\\Application\\chromedriver.exe")
You can also install pip install webdriver-manager then run the following code which will install the correct webdriver for you
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
driver = webdriver.Chrome(ChromeDriverManager().install())