首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用python selenium错误登录:NoSuchElementException错误

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

Stack Overflow用户
提问于 2016-08-15 18:54:45
回答 1查看 752关注 0票数 0

我试过用id和xpath来定位submit按钮,但是它们都没有在页面源代码中工作和检查,id是相同的,我不知道为什么会发生这种情况,即使我给出了正确的Id或xpath

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

代码语言:javascript
复制
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:消息:无法定位元素:{“方法”:“xpath”,“选择器”:“.//*@id=‘loginbtn’”}

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-15 19:53:11

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

代码语言:javascript
复制
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()

完整代码:

代码语言:javascript
复制
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()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38961190

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档