2014-11-24 1 views
9

나는 자동으로 kahoot.it 웹 페이지에서 셀렌을 사용하여 많은 수의 사용자를 생성하여 클래스 앞에 표시하려고합니다. 어떤 도움이 많이 주시면 감사하겠습니다selenium.common.exceptions.NoSuchElementException : 메시지 : 요소를 찾을 수 없습니다 :

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

:이 오류가

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") 

(게임을 입력하면 게임 ID 쓰기)을 inputSession 항목에 액세스하려고이 오류 메시지! :)

+0

HTML 모양은 어떻습니까? – Saifur

+0

kahoot.it에서 전체 코드를 확인할 수 있지만 관련 부분은

\t \t \t \t \t \t "inputSession" "ios7fix =" "class ="사용자 이름 ng-pristine ng- \t \t

답변

12

find 요소가 페이지에 나타나기 전에 실행되는 경쟁 조건 일 수 있습니다. wait timeout documentation을 살펴보십시오. 여기에서 웹 페이지를로드하는 데 시간이 걸리고, 따라서 webelement의 검출이 발생하지 않은 것처럼

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

보이는 워드 프로세서의 예이다. 위의 @ shri의 코드를 사용하거나 코드 바로 아래에 다음 두 문장을 추가 할 수 있습니다. driver = webdriver.Firefox() :

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

이 역시 도움이되었습니다. 감사! –

+0

@MortenStulen : 도움이된다면 upvote하십시오. 고마워 .. :) – Subh

+0

만약 내가 할 수 있으면. 방금 계정을 만들었으니 15 평판이 필요합니다. –