我试图登录到一个使用Selenium的网站。我的主要问题是,我似乎找不到任何与登录相关的元素。
我只是不断地得到NoSuchElementException错误。我试过研究,但还没搞清楚原因。
到目前为止,这是我的代码
from selenium import webdriver
driver = webdriver.Chrome("C:/path/to/chromedriver.exe")
driver.get('https://sports.dafabet.com/')
username = driver.find_element_by_id("userName")
password = driver.find_element_by_id("password")
login_button = driver.find_element_by_id("loginBtnForm")
发布于 2021-06-17 02:31:20
尝试使用ExplicitWaits
代码:
driver.maximize_window()
wait = WebDriverWait(driver, 10)
driver.get("https://www.dafabet.com/en/sports")
wait.until(EC.element_to_be_clickable((By.ID, "LoginForm_username"))).send_keys('your username')
wait.until(EC.element_to_be_clickable((By.ID, "LoginForm_password"))).send_keys('your password')
wait.until(EC.element_to_be_clickable((By.ID, "LoginForm_submit"))).click()
导入:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
阅读更多关于ExplicitWait这里-官方医生的信息
发布于 2021-06-17 02:04:26
在获得这些元素之前,您错过了一个延迟/等待。
最简单的方法是在
driver.get('https://sports.dafabet.com/')
和
username = driver.find_element_by_id("userName")
就像这样:
driver.get('https://sports.dafabet.com/')
time.sleep(10)
username = driver.find_element_by_id("userName")
更好的做法是使用显式等待,如下所示:
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
wait = WebDriverWait(driver, 30)
username = wait.until(EC.visibility_of_element_located((By.ID, 'userName')))
https://stackoverflow.com/questions/68016857
复制相似问题