haniaman
@haniaman
Учусь на программиста

Почему выбрасывает NoSuchElementException?

Здравствуйте, мне надо спарсить данные с сайта, запускаю двайвер, делаю все укладываясь в 30 сек(ввести hash, указать кол-во раундов, дождаться когда все загрузится), в итоге все выглядит так (prnt.sc/wft0xn).
Все вроде хорошо, но выбрасывает NoSuchElementException, хотя все верно указано, пробовал дожидаться через явное ожидание, пока страница загрузит хотя-бы 1 элемент, но он также не видел, хотя все было уже на экране и выбрасывал ошибку, пробовал 2-мя разными способами указывать xpath путь, но тоже NoSuch.

from selenium import webdriver
from selenium.common.exceptions import StaleElementReferenceException, NoSuchElementException
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from time import sleep
import csv

driver = webdriver.Chrome()

driver.get("https://jsfiddle.net/Dexon95/2fmuxLza/show")

sleep(30)

# 53b25a504ddd78121e6473bfc870d3390f32292e35c0bf7a638ef16d8304e45e

a = 1

while True:
	# element = WebDriverWait(driver, 40).until(EC.presence_of_element_located((By.XPATH, "/html/body/section/div[3]/table/tbody/tr[1]/td[1]"))) # ждет загрузки страницы
	try:
		Hash = driver.find_element_by_xpath(f'//*[@id="game_verify_table"]/tr[{a}]/td[1]').text
		print(Hash)
		Hash = driver.find_element_by_xpath(f'/html/body/section/div[3]/table/tbody/tr[{a}]/td[1]').text
		print(Hash)
		game = driver.find_element_by_xpath(f'//*[@id="game_verify_table"]/tr[{a}]/td[2]').text
		print(game)
		game = driver.find_element_by_xpath(f'/html/body/section/div[3]/table/tbody/tr[{a}]/td[2]').text
		print(game)

		t = [str(a), 'game', '{};'.format(game), '{}'.format(Hash)]
		print(t)
		
		a += 1
	except StaleElementReferenceException:
		print('исключение1')
	except NoSuchElementException:
		print('исключение2')
  • Вопрос задан
  • 191 просмотр
Решения вопроса 1
haniaman
@haniaman Автор вопроса
Учусь на программиста
Нашел решение, надо было переключиться на iframe
driver.switch_to.frame(driver.find_element_by_xpath('//*[@id="result"]/iframe'))
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы