2014-11-24 92 views
9

我試圖自動生成大量的用戶在網頁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

回答

12

可能是查找元素在頁面上出現之前執行的競爭條件。看看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() 
14

看起來它需要時間來加載網頁,因此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