Hello, please help, i got this error when i try to run my code:
Traceback (most recent call last):
File "/home/keysoryu/online_users/online_web.py", line 21, in <module>
driver = uc.Chrome()
File "/home/keysoryu/.local/lib/python3.10/site-packages/undetected_chromedriver/__init__.py", line 431, in __init__
super(Chrome, self).__init__(
File "/usr/local/lib/python3.10/site-packages/selenium/webdriver/chrome/webdriver.py", line 70, in __init__
super(WebDriver, self).__init__(DesiredCapabilities.CHROME['browserName'], "goog",
File "/usr/local/lib/python3.10/site-packages/selenium/webdriver/chromium/webdriver.py", line 92, in __init__
RemoteWebDriver.__init__(
File "/usr/local/lib/python3.10/site-packages/selenium/webdriver/remote/webdriver.py", line 275, in __init__
self.start_session(capabilities, browser_profile)
File "/home/keysoryu/.local/lib/python3.10/site-packages/undetected_chromedriver/__init__.py", line 694, in start_session
super(selenium.webdriver.chrome.webdriver.WebDriver, self).start_session(
File "/usr/local/lib/python3.10/site-packages/selenium/webdriver/remote/webdriver.py", line 365, in start_session
response = self.execute(Command.NEW_SESSION, parameters)
File "/usr/local/lib/python3.10/site-packages/selenium/webdriver/remote/webdriver.py", line 430, in execute
self.error_handler.check_response(response)
File "/usr/local/lib/python3.10/site-packages/selenium/webdriver/remote/errorhandler.py", line 247, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: unknown error: cannot connect to chrome at 127.0.0.1:37355
from chrome not reachable
Stacktrace:
#0 0x559786bb5303 <unknown>
#1 0x559786989bbd <unknown>
#2 0x5597869785ab <unknown>
#3 0x5597869b63c3 <unknown>
#4 0x5597869adae9 <unknown>
#5 0x5597869ef4a6 <unknown>
#6 0x5597869e6753 <unknown>
#7 0x5597869b9a14 <unknown>
#8 0x5597869bab7e <unknown>
#9 0x559786c0432e <unknown>
#10 0x559786c07c0e <unknown>
#11 0x559786bea610 <unknown>
#12 0x559786c08c23 <unknown>
This is code (it creates a list of urls, login into the website, then goes to the links via chrome, check if users are online and finally sends an email with the online users):
from selenium import webdriver
import time
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.action_chains import ActionChains
import undetected_chromedriver as uc
from undetected_chromedriver import Chrome
# create a new Chrome browser instance
options = webdriver.ChromeOptions()
options.add_argument("--disable-notifications")
options.add_argument("--disable-extensions")
options.add_argument("--disable-infobars")
options.add_argument("--start-maximized")
options.add_argument("--headless")
options.add_argument("--user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36")
#Anterior--driver = webdriver.Chrome(chrome_options=options)
driver = uc.Chrome()
driver.delete_all_cookies()
while True:
users = [
{"username": "Chris", "url": "url1"},
{"username": "Dean", "url": "url2"},
{"username": "Jim", "url": "urln"},
]
#login in web
driver.get("weblink")
# Wait until the google login button is visible
time.sleep(10)
# Find the google login button
google_login_button = driver.find_element(By.ID,"surface1")
# Move the mouse to the google login button
actions = ActionChains(driver)
actions.move_to_element(google_login_button)
actions.click(google_login_button)
actions.perform()
time.sleep(20)
driver.switch_to.window(driver.window_handles[1])
#type credentials
email_field = driver.find_element(By.ID,"identifierId")
email_field.send_keys("mail@gmail.com")
# simulate mouse click on the button
email_field.send_keys(Keys.ENTER)
time.sleep(3)
#write password in next window
focused_elem = driver.switch_to.active_element
focused_elem.send_keys("pass")
focused_elem.send_keys(Keys.ENTER)
time.sleep(15)
driver.switch_to.window(driver.window_handles[0])
usernames = []
for user in users:
# navigate to the webpage
driver.get(user["url"])
time.sleep(5)
# check if the text "En línea" exists on the page
if "Online" in driver.page_source:
username = "Username: " + user["username"] + "\nURL: " + user["url"] + " Online"
usernames.append(username)
#send mail
if usernames:
#send mail
import yagmail
email= 'mail'
contraseña='pass'
yag = yagmail.SMTP(user=email,password=contraseña)
# Definir variables
destinatario= "mail@gmail.com"
asunto= 'Profesor online'
mensaje= usernames
yag.send(destinatario, asunto, mensaje)
# close the browser
driver.quit()
Thanks!