[英]Unable to click on "Sign In" button with Selenium and Python
我正在嘗試使用網站上的用戶和密碼自動登錄,這是一個:
我設法通過 Selenium 插入了用戶名和密碼,但我無法單擊“Accedi”按鈕,這是意大利語中“登錄”的意思。
HTML:
<div>
<button value="Accedi" type="submit">Accedi</button>
</div>
我嘗試了以下 python 代碼:
第一次嘗試:
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "/html/body/div[1]/div[2]/div[2]/div[1]/form[1]/div/button"))).click()
第二次嘗試:
button = driver.find_element(by=By.CSS_SELECTOR, value="Accedi")
第三次嘗試:
button = driver.find_element(by=By.LINK_TEXT, value="Accedi")
button.click()
但沒有成功。 你能幫我完成這個個人項目嗎?
你可以試試:
# Needed libs
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
import time
#Open the browser
driver = webdriver.Edge()
url = 'https://www.esselunga.it/area-utenti/applicationCheck?appName=esselungaEcommerce&daru=https%3A%2F%2Fwww.esselungaacasa.it%3A443%2Fecommerce%2Fnav%2Fauth%2Fsupermercato%2Fhome.html%3F&loginType=light'
driver.get(url)
user = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, f"gw_username")))
user.send_keys('User@gmai.com')
user = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, f"gw_password")))
user.send_keys('password')
login_button = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, f"//button[@value='Accedi']")))
login_button.click()
time.sleep(10)
但我在這里看到一個大問題......問題是你有一個驗證碼。 有了我給你的提示,你將解決點擊元素的問題,但現在你需要通過驗證碼......這將是一個不同的主題,因為驗證碼是為避免機器人而創建的(Selenium 是一個管理你的瀏覽器的機器人).
對於驗證碼的問題,您可以查看其他答案: Captctha
我希望它有所幫助!
要首先單擊Accedi ,您必須單擊<iframe>
中的reCAPTCHA復選框,因此您必須:
誘導WebDriverWait以等待所需的框架可用並切換到它。
誘導WebDriverWait以使reCAPTCHA元素可單擊。
誘導WebDriverWait使Accedi元素可點擊。
您可以使用以下定位器策略:
使用CSS_SELECTOR :
driver.get('https://www.esselunga.it/area-utenti/applicationCheck?appName=esselungaEcommerce&daru=https%3A%2F%2Fwww.esselungaacasa.it%3A443%2Fecommerce%2Fnav%2Fauth%2Fsupermercato%2Fhome.html%3F&loginType=light') WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "a#accettaTuttiCookie"))).click() driver.find_element(By.CSS_SELECTOR, "input#gw_username").send_keys("LeonardoVarè@stackoverflow.com") driver.find_element(By.CSS_SELECTOR, "input#gw_password").send_keys("LeonardoVarè") WebDriverWait(driver, 20).until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR,"iframe[title='reCAPTCHA']"))) WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "span#recaptcha-anchor"))).click() driver.switch_to.default_content() WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button[value='Accedi']"))).click()
注意:您必須添加以下導入:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.