#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()
Я могу получить доступ к элементу «отменить выбор всех» и щелкнуть по нему.