无法登录 python selenium 错误:NoSuchElementException 错误 [英] Unable to login with python selenium error:NoSuchElementException error

查看:65
本文介绍了无法登录 python selenium 错误:NoSuchElementException 错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我尝试通过 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屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆