python - 使用 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)
然后,我检查了将密钥发送到用户名和密码字段,但遇到了类似的错误。
怎么了?
解决方案
它似乎使用 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()
推荐阅读
- git - gitignore 不忽略文件/文件夹
- curl - Haproxy lua http-response http-request 缓冲区
- android - Moshi KotlinJsonAdapterFactory 在启用 minify 后无法解析 Json
- java - 有没有办法读取文本文件中的特定行?
- kibana - 如何导出所有 8304 命中?
- java - Hibernate 在 where 子句中使用连接列创建查询
- c# - 获取两个日期之间的列出日期,不包括mysql中的周末
- java - 在android studio中蓝牙连接到手机时如何从蓝牙耳机获取详细信息
- r - 如何修复“二进制运算符的非数字参数”
- javascript - 我有表格,我想在 excel 中导出表格数据