我试过用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:消息:无法定位元素:{“方法”:“xpath”,“选择器”:“.//*@id=‘loginbtn’”}
发布于 2016-08-15 19:53:11
可能这是时间问题,您应该实现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()完整代码:
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()https://stackoverflow.com/questions/38961190
复制相似问题