Selenium.common.exceptions.NoSuchElementException: Сообщение: Не удается найти элемент:

Я пытаюсь автоматически генерировать множество пользователей на веб-странице kahoot.it, используя селен, чтобы они отображались перед классом, однако я получаю это сообщение об ошибке при попытке доступа к элементу inputSession (где вы пишете gameID, чтобы войти в игру)

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

Это ошибка:

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

Любая помощь будет очень признательна!:)

Ответ 1

Это может быть условие гонки, при котором элемент поиска выполняется до того, как он появится на странице. Посмотрите документацию по тайм-ауту ожидания. Вот пример из документации

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

Ответ 2

Похоже, для загрузки веб-страницы требуется время, и, следовательно, обнаружение веб-элемента не происходит. Вы можете использовать код @shri выше или просто добавить эти два оператора чуть ниже кода driver = webdriver.Firefox():

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

Ответ 3

Вы также можете использовать ниже в качестве альтернативы вышеупомянутым двум решениям:

import time
time.sleep(30)