Próbuję zrobić web scraper, który zaloguje się do serwisu librus i pobierze wiadomości. Problem w tym, że kiedy program dochodzi do formularza logowanie nie moge odszukać żadnego pola "<input " bo selenium pokazuje inne źródło, niż jest wyświetlone.
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait
from bs4 import BeautifulSoup, NavigableString # BeautifulSoup is in bs4 package
import time
driver = webdriver.Firefox()
driver.implicitly_wait(10)
driver.get('https://portal.librus.pl//rodzina/synergia/loguj')
# wyszukuję i klikam na button, "Akceptuj cookie"
btn = driver.find_element(By.CLASS_NAME, "modal-button__primary")
btn.click()
time.sleep(2)
# wyszukuję i klikam na menu "LIBRUS Synergia" aby je rozwinąć
link = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH,'//a[@href="#"]')))
link.click()
time.sleep(2)
# wyszukuję i klikam na pozycję z menu "Zaloguj"
link = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, '//a[@href="/rodzina/synergia/loguj"]')))
link.click()
time.sleep(5) # dodałem aby na 100% strona się załadowała
soup = BeautifulSoup(driver.page_source, 'html.parser') # parsuje do testu wyświetloną stronę
input_Login = WebDriverWait(driver, 2).until(EC.presence_of_element_located((By.ID, "Login")))
input_Login.send_keys("22437039")
problem w tym, że nie odnajduje mi pola formularza "Login" i nie wpisuje w nim tekstu.
Dodatkowo dodałem:
soup = BeautifulSoup(driver.page_source, 'html.parser')
aby sprawdzić aktualne źródło strony i okazuje się, że jest to poprzedni widok strony głównej a nie formularza logowania. Dlaczego?
Dodałem nawet sleep(5) przed wyszykiwaniem pola Login aby wszystk się załadowało, ale to i tak nic nie daje.
Pozdro.