J'essaie de générer automatiquement beaucoup d'utilisateurs sur la page Web kahoot.it en utilisant Selenium pour les faire apparaître devant la classe. Cependant, je reçois ce message d'erreur lorsque j'essaie d'accéder à l'élément inputSession (où vous écrivez le gameID à entrer) le jeu)
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")
C'est l'erreur:
Selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element:
{"method":"id","selector":"inputSession"}
Toute aide serait très appréciée! :)
Peut-être une condition de concurrence critique dans laquelle l'élément de recherche s'exécute avant qu'il ne soit présent sur la page. Jetez un coup d’œil à la documentation wait timeout . Voici un exemple tiré de la 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()
On dirait que le chargement de la page Web prend du temps et, par conséquent, la détection de webelement ne s'est pas produite. Vous pouvez soit utiliser le code de @ shri ci-dessus, soit simplement ajouter ces deux instructions juste en dessous du code driver = webdriver.Firefox()
:
driver.maximize_window() //For maximizing window
driver.implicitly_wait(20) //gives an implicit wait for 20 seconds
Vous pouvez également utiliser ci-dessous comme alternative aux deux solutions ci-dessus:
import time
time.sleep(30)