Selenium и вложенные html-страницы

174
26 января 2021, 04:30

Дело было вечером, делать было нечего

Решила попрактиковать свои знания Selenium, а в качестве жертвы взяла игру от Google по сериалу "Doctor Who", приуроченную к 50-летию сериала. https://www.google.com/doodles/doctor-whos-50th-anniversary Проблема возникла почти сразу же) На самой странице пыталась получить доступ ко второму тегу canvas по xPath: "//div[@id='hplogo']/canvas[2]", который выкинул меня в NoSuchElementException. Когда просто вбила $x("//canvas"), поняла, что не так всё просто: сама игра представляет собой отдельный HTML документ.

Так вот, как я могу работать с игрой, оставаясь на этой странице? Как получить доступ к этому документу через основной средствами Selenium? Буду рада любым материалам/ответам на эту тему.

Answer 1

Нужно переключиться на <iframe>, в котором находится нужный вам элемент. Это можно сделать с помощью switch_to

Пример на Python:

from selenium import webdriver

driver = webdriver.Chrome()
url = 'https://www.google.com/doodles/doctor-whos-50th-anniversary'
driver.get(url)
# Ищем iframe и переключаемся на него
iframe = driver.find_element_by_id('hplogo-complex')
driver.switch_to.frame(iframe)
canvas = driver.find_element_by_xpath('//*[@id="hplogo"]/canvas[2]')
print(canvas)
# Для переключения обратно
driver.switch_to.default_content()
READ ALSO
Проверка начертания ячейки Excel Apache POI

Проверка начертания ячейки Excel Apache POI

Как с помощью Apache POI проверить начертание ячейки, а именно применен ли полужирный стиль?

157
Интерфейс List и его реализация

Интерфейс List и его реализация

есть такое задание:

158
Логика построения кода

Логика построения кода

Объясните по какой логике должна работать программа, у меня есть две TableView, выделяешь элемент в первой таблице, во второй таблице отображаются...

158
Стоит ли работать над legacy проектами? [закрыт]

Стоит ли работать над legacy проектами? [закрыт]

Хотите улучшить этот вопрос? Переформулируйте вопрос так, чтобы на него можно было дать ответ, основанный на фактах и цитатах

132