Python >> Tutoriel Python >  >> Python Tag >> Requests

Remplir des formulaires en utilisant du sélénium ou des requêtes

Vous ne pouvez pas accéder au champ Mot de passe car il n'est pas présent sur la page principale. Pour gérer le champ Mot de passe, vous devez cliquer sur le bouton Connexion pour accéder à la page de connexion. Vous devez également passer à l'iframe qui contient le formulaire d'authentification

from selenium.webdriver.support.ui import WebDriverWait as wait
from selenium.webdriver.support import expected_conditions as EC

driver.get("https://www.santandertotta.pt/pt_PT/Particulares.html")
driver.find_element_by_xpath("//input[@title='Login de Particulares']").click()
wait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it("ws"))
user = driver.find_element_by_name("identificacionUsuario")
user.send_keys("user")
pas = driver.find_element_by_name("claveConsultiva")
pas.send_keys("password")
pas.submit()

Une fois que vous accédez à l'url https://www.santandertotta.pt/pt_PT/Particulares.html vous devez d'abord cliquer sur l'élément avec le texte comme Connexion alors seulement le Nome et Mot de passe le champ apparaît mais pour accéder à ces champs, vous devez passer au cadre avec id comme ws provoquant WebDriverWait . Suivant pour localiser l'élément de Nome vous devez induire WebDriverWait à nouveau comme suit :

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver=webdriver.Firefox(executable_path=r'C:\Utility\BrowserDrivers\geckodriver.exe')
driver.get("https://www.santandertotta.pt/pt_PT/Particulares.html")
driver.find_element_by_xpath("//input[@class='ttAH_button03']").click()
WebDriverWait(driver, 20).until(EC.frame_to_be_available_and_switch_to_it((By.ID, "ws")))
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//input[@class='inputlong' and @id='identificacionUsuario']"))).send_keys("your_name")
driver.find_element_by_xpath("//input[@id='claveConsultiva' and @name='claveConsultiva']").send_keys("your_password")
driver.find_element_by_link_text("Entrar no NetBanco Particulares").click()

Ici vous pouvez trouver une discussion pertinente sur les façons de traiter #document sous iframe