无法使用python selenium登录错误:NoSuchElementException

2024-09-30 20:34:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试过通过id和xpath定位submit按钮,但是它们都没有工作,并且签入了页面源代码,id是相同的,即使我给出了正确的id或xpath,我也不知道为什么会发生这种情况

网址:https://moodle.niituniversity.in/moodle/login/index.php

from pyvirtualdisplay import Display
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
display = Display(visible=0, size=(1024, 768))
display.start()
driver = webdriver.Firefox()
#driver.set_preference("browser.startup.homepage_override.mstone", "ignore")
driver.get("https://moodle.niituniversity.in/moodle/login/index.php")
username = driver.find_element_by_name("username")
username.clear()
username.send_keys("User123")
username.send_keys(Keys.RETURN)
password = driver.find_element_by_name("password")
password.clear()
password.send_keys("pass123")
password.send_keys(Keys.RETURN)
password = driver.find_element_by_xpath(".//*[@id='loginbtn']").click()
driver.get("https://moodle.niituniversity.in/moodle")
assert "user" in driver.page_source
driver.close()
display.stop()

.NoSuchElementException: Message: Unable to locate element: {"method":"xpath","selector":".//*[@id='loginbtn']"}


Tags: infromhttpsimportsendiddriverusername
1条回答
网友
1楼 · 发布于 2024-09-30 20:34:12

可能这是时间问题,您应该实现WebDriverWait来等待按钮出现在页面上,如下所示:

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

element = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.ID, "loginbtn")))
element.click()

完整代码:

^{pr2}$

相关问题 更多 >