在 Selenium 中,与元素的交互需要切换到各自的 iFrame,因为默认焦点位于最上面的窗口。然而,循环遍历框架层次结构并识别元素的位置可能具有挑战性。
要访问 iframe 中的元素,需要使用特定的切换方法:
按框架名称: 使用名称属性:
driver.switch_to.frame("iframe_name")
按帧 ID: 使用 id 属性:
driver.switch_to.frame("iframe_id")
按帧索引: 使用帧的数字index:
driver.switch_to.frame(0)
但是,在导航多层嵌套 iFrame 时,这些方法可能很麻烦。为了简化这个过程,Selenium 通过 WebDriverWait 提供了frame_to_be_available_and_switch_to_it条件。
例如,使用其名称切换到 iframe:
WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.NAME, "iframe_name")))
注意:交互后对于该元素,可以使用default_content()或parent_frame()返回主框架。
在 iFrame 动态加载的情况下,使用显式等待可确保元素在与其交互之前变得可用。这种方法对于框架集和嵌套 iFrame 场景中的元素特别有用。
以上是Selenium 如何高效地选择嵌套 iFrame 中的 HTML 元素?的详细内容。更多信息请关注PHP中文网其他相关文章!