Дело было вечером, делать было нечего
Решила попрактиковать свои знания 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? Буду рада любым материалам/ответам на эту тему.
Нужно переключиться на <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()
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Как с помощью Apache POI проверить начертание ячейки, а именно применен ли полужирный стиль?
Объясните по какой логике должна работать программа, у меня есть две TableView, выделяешь элемент в первой таблице, во второй таблице отображаются...
Хотите улучшить этот вопрос? Переформулируйте вопрос так, чтобы на него можно было дать ответ, основанный на фактах и цитатах