взаимодействие с всплывающим окном selenium

#python-3.x #selenium-chromedriver

#python-3.x #selenium-chromedriver

Вопрос:

У меня возникли некоторые трудности при взаимодействии с всплывающим окном с возможностью перетаскивания. После запуска следующего кода появляется окно, в котором я могу выполнить некоторые настройки. Я пытаюсь нажать на появившуюся кнопку отменить выбор всех.

 from selenium import webdriver
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import Select
from selenium.webdriver.support.ui import WebDriverWait

driver.get("https://stats.oecd.org/Index.aspx?DataSetCode=HOUSE_PRICES#")
try:
    customize = WebDriverWait(driver, delay).until(EC.presence_of_element_located((By.ID, "customize-icon")))
    print("Customizing")
except TimeoutException:
    print("Loading took too much time!")
selection = driver.find_element_by_id("customize-menu-0")
menu = driver.find_element_by_id("customize-menu-3")
Hover = ActionChains(driver).move_to_element(customize).move_to_element(selection).move_to_element(menu)
driver.execute_script("arguments[0].click()", menu)
  

Я пробовал переключаться на функции оповещения и переключаться на всплывающие окна, но я чувствую, что то, что отображается на этом веб-сайте, не является всплывающим окном или предупреждением.

Была бы весьма признательна за любую помощь по доступу к меню настройки «всплывающее окно» и взаимодействию с ним. Спасибо!

РЕДАКТИРОВАТЬ: Похоже, что в HTML всплывающая таблица / окно называется iframe, и у него есть другой html-тег, заключающий в себе все содержимое. Iframe содержится в виджете пользовательского интерфейса, и в результате я не могу переключиться на iframe напрямую.

Ответ №1:

Да, это работает 🙂

Добавление к приведенному выше коду и прямая ссылка на идентификатор iframe:

 driver.switch_to.frame("DialogFrame")
driver.find_element_by_id("lbtnClear_all").click()
  

Я могу получить доступ к элементу «отменить выбор всех» и щелкнуть по нему.