无法登录 python selenium 错误:NoSuchElementException 错误 [英] Unable to login with python selenium error:NoSuchElementException error
问题描述
我尝试通过 id 和 xpath 定位提交按钮,但它们都没有工作并检查页面源代码,id 是相同的.我不知道为什么会发生这种情况,即使我提供了正确的 Id 或 xpath
网址: https://moodle.niituniversity.in/moodle/登录/index.php
from pyvirtualdisplay import 显示从硒导入网络驱动程序从 selenium.webdriver.common.keys 导入密钥display = Display(visible=0, size=(1024, 768))显示.开始()驱动程序 = 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("用户名")用户名.clear()username.send_keys("User123")用户名.send_keys(Keys.RETURN)密码 = driver.find_element_by_name("密码")密码.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")在 driver.page_source 中断言用户"驱动程序关闭()显示.停止()
<块引用>
.NoSuchElementException:消息:无法定位元素:{"method":"xpath","selector":".///*[@id='loginbtn']"}
这可能是时间问题,你应该实现 WebDriverWait
等待按钮出现在页面上,如下所示:-
from selenium import webdriverfrom selenium.webdriver.common.by import By从 selenium.webdriver.support.ui 导入 WebDriverWait从 selenium.webdriver.support 导入 expected_conditions 作为 ECelement = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, "loginbtn")))element.click()
完整代码:
from selenium import webdriverfrom selenium.webdriver.common.by import By从 selenium.webdriver.support.ui 导入 WebDriverWait从 selenium.webdriver.support 导入 expected_conditions 作为 ECdriver.get("https://moodle.niituniversity.in/moodle/login/index.php")username = driver.find_element_by_name("用户名")用户名.clear()username.send_keys("User123")密码 = driver.find_element_by_name("密码")密码.clear()password.send_keys("pass123")button = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, "loginbtn")))button.click()
I have tried locating the submit button by id and xpath but none of them worked and checked in the page source ,the id is same.I have no idea why this is happening even though I am giving the correct Id or xpath
URL : 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']"}
Might be possible this is timing issue, you should implement WebDriverWait
to wait until button present on page as below :-
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()
Full code :
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.get("https://moodle.niituniversity.in/moodle/login/index.php")
username = driver.find_element_by_name("username")
username.clear()
username.send_keys("User123")
password = driver.find_element_by_name("password")
password.clear()
password.send_keys("pass123")
button = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, "loginbtn")))
button.click()
这篇关于无法登录 python selenium 错误:NoSuchElementException 错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!