Ausgabe
Ich habe versucht, ein Selenprogramm zu verwenden, aber jetzt stecke ich beim Anmelden fest.
- Hier ist der Code => https://pastebin.com/ykTcd1rb
- Wenn der Code die letzte Codezeile (
username = driver.find_element(By.ID, 'Login')
) ausführt, erhalte ich eine Fehlermeldung (selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":"[id="Login"]"}
) - Hier ist Element, das ich versuche zu bekommen
<input aria-invalid="false" type="text" class="form-control" name="Login" id="Login" required="">
Bitte hilf mir
Lösung
Wie ich sehe, kann dieser Befehl more = driver.find_element(By.ID, "dropdownTopRightMenuButton")
nicht ausgeführt werden, da dieses Element nicht sichtbar ist.
Außerdem ist es keine gute Idee, fest codierte Sleeps zu verwenden. WebDriverWait
expected_conditions
sollte stattdessen verwendet werden.
Folgender Code hat bei mir funktioniert:
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
options = Options()
options.add_argument("start-maximized")
webdriver_service = Service('C:\webdrivers\chromedriver.exe')
driver = webdriver.Chrome(options=options, service=webdriver_service)
wait = WebDriverWait(driver, 10)
url = "https://portal.librus.pl/rodzina/synergia/loguj"
driver.get(url)
wait.until(EC.element_to_be_clickable((By.ID, "cookieBoxClose"))).click()
wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "a.login-before-btn"))).click()
wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "[name='email']"))).send_keys("my_username")
wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "[name='password']"))).send_keys("my_password")
wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button[type='submit']"))).click()
Dies konnte sich natürlich nicht anmelden, da ich keine gültigen Anmeldeinformationen habe, aber mit korrekten Anmeldeinformationen sollte dies funktionieren
Beantwortet von – Prophet
Antwort geprüft von – Clifford M. (FixError Volunteer)