首页 > 解决方案 > 使用 Selenium Python 登录?

问题描述

我无法登录此站点。

这是网址。

https://swayam.gov.in/azurelogin?continue=/

我尝试了什么:

from selenium import webdriver

driver = webdriver.Chrome()
driver.get("https://swayam.gov.in/azurelogin?continue=/")
login_google_btn = driver.find_element_by_xpath('//*[@id="GoogleExchange"]')
login_google_btn.click()

我需要使用 google 登录,因此需要单击该按钮。

输出:

raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate 
element: {"method":"xpath","selector":"//*[@id="next"]"}
(Session info: chrome=80.0.3987.106)

然后,我检查了将密钥发送到用户名和密码字段,但遇到了类似的错误。

怎么了?

标签: pythonselenium

解决方案


它似乎使用 JavaScript 来加载数据,您必须稍等片刻才能看到页面上的元素。

您可以使用time.sleep(1)driver.implicitly_wait(1)等待 1 秒。

from selenium import webdriver
#import time

driver = webdriver.Chrome()
driver.implicitly_wait(1)

driver.get("https://swayam.gov.in/azurelogin?continue=/")
#time.sleep(1)

#login_google_btn = driver.find_element_by_id('GoogleExchange')
login_google_btn = driver.find_element_by_xpath('//*[@id="GoogleExchange"]')
login_google_btn.click()

有关其他方法,请参见 doc Waits

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.Chrome()
driver.get("https://swayam.gov.in/azurelogin?continue=/")

wait = WebDriverWait(driver, 10)
#login_google_btn = wait.until(EC.element_to_be_clickable((By.ID, 'GoogleExchange')))
login_google_btn = wait.until(EC.element_to_be_clickable((By.XPATH, '//*[@id="GoogleExchange"]')))
login_google_btn.click()

推荐阅读