如何使用Python在iframe中切换Selenium焦点
我无法从网站的下拉菜单中选择复选框。下拉列表位于iframe内部,当我尝试切换到iframe时,我会不断收到如何使用Python在iframe中切换Selenium焦点,python,selenium,iframe,webdriverwait,expected-condition,Python,Selenium,Iframe,Webdriverwait,Expected Condition,我无法从网站的下拉菜单中选择复选框。下拉列表位于iframe内部,当我尝试切换到iframe时,我会不断收到TimeoutException消息: 下面是我正在尝试的代码和HTML。我是Python新手,因此在此方面的任何帮助都将不胜感激 Python: wait = WebDriverWait(driver, 20) frm1= wait.until(EC.presence_of_element_located((By.ID, "ReportViewerControl_ctl04_
TimeoutException
消息:
下面是我正在尝试的代码和HTML。我是Python新手,因此在此方面的任何帮助都将不胜感激
Python:
wait = WebDriverWait(driver, 20)
frm1= wait.until(EC.presence_of_element_located((By.ID, "ReportViewerControl_ctl04_ctl03_ctl01")))
driver.switch_to.frame(frm1)
HTML:
切换
中的焦点,而不是元素的存在()
,因此您必须:
- 诱导WebDriverWait以使所需帧可用并切换到该帧
- 您可以使用以下任一选项:
- 使用
:CSS\u选择器
WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR,"iframe[name^='ReportViewerControl'][longdesc='Area place holder']")))
- 使用
:XPATH
WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH,"//iframe[starts-with(@id, 'ReportViewerControl') and @title='Area place holder']")))
- 注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC
- 使用
参考文献 您可以在以下内容中找到一些相关讨论:
中切换焦点,而不是元素的存在()
,因此您必须:
- 诱导WebDriverWait以使所需帧可用并切换到该帧
- 您可以使用以下任一选项:
- 使用
:CSS\u选择器
WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR,"iframe[name^='ReportViewerControl'][longdesc='Area place holder']")))
- 使用
:XPATH
WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH,"//iframe[starts-with(@id, 'ReportViewerControl') and @title='Area place holder']")))
- 注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC
- 使用
参考文献 您可以在以下内容中找到一些相关讨论: