selenium.common.exceptions.NoSuchElementException:消息:无法找到元素:

问题描述:

我试图自动生成大量的用户在网页kahoot.it使用硒,使他们出现在类的前面,但是,我得到selenium.common.exceptions.NoSuchElementException:消息:无法找到元素:

selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: 
{"method":"id","selector":"inputSession"} 

任何帮助将非常感激:试图访问inputSession项(其中你写的游戏ID进入游戏)

from selenium import webdriver 
from selenium.webdriver.common.keys import Keys 

driver = webdriver.Firefox() 
driver.get("http://www.kahoot.it") 

gameID = driver.find_element_by_id("inputSession") 
username = driver.find_element_by_id("username") 

gameID.send_keys("53384") 

这是错误时,此错误消息! :)

+0

如何在HTML是什么样子? – Saifur 2014-11-24 19:38:08

+0

您可以查看kahoot.it的全部代码,但相关部分是:

\t \t \t \t \t \t \t \t
2014-11-24 19:47:10

可能是查找元素在页面上出现之前执行的竞争条件。看看wait timeout documentation。下面是从文档

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 = webdriver.Firefox() 
driver.get("http://somedomain/url_that_delays_loading") 
try: 
    element = WebDriverWait(driver, 10).until(
     EC.presence_of_element_located((By.ID, "myDynamicElement")) 
    ) 
finally: 
    driver.quit() 

看起来它需要时间来加载网页,因此webelement的检测没有发生的例子。您可以使用@至尊的代码上面或只需添加这两个语句只是代码driver = webdriver.Firefox()如下:

driver.maximize_window() //For maximizing window 
driver.implicitly_wait(20) //gives an implicit wait for 20 seconds 
+0

这也有帮助。谢谢! – 2014-11-24 20:06:17

+0

@MortenStulen:如果您发现它有帮助,请注册。谢谢.. :) – Subh 2014-11-24 20:08:31

+0

我会如果我能。我刚刚创建了一个帐户,需要15点声望。 – 2014-11-24 20:35:58