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)