硒弹出框交互

时间:2019-04-06 05:22:09

标签: 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包含在ui小部件中,因此我无法直接切换到iframe。

1 个答案:

答案 0 :(得分:0)

是的,它有效:)

添加到上面的代码中,并直接引用iframe ID:

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

我可以访问“取消全选”项,然后单击它。