问题: 在没有显式切换的情况下选择 iframe 或嵌套 iframe 中的元素
答案:
不,不可能直接与 iframe 中的元素交互而不切换到相应的 iframe。 Selenium 的默认焦点仍然在顶部窗口。
原因:
加载网页时,Selenium 的焦点位于主(顶级)窗口。要与 iframe 内的元素交互,您必须显式切换到该 iframe。
框架切换方法:
切换框架的方法有三种:
按帧名称:
driver.switch_to.frame("iframe_name")
按帧 ID:
driver.switch_to.frame("iframe_id")
按帧索引:
driver.switch_to.frame(0) # Index of the frame
要切换回主框架,请使用:
driver.switch_to.default_content()
更好的方法:WebDriverWait
更好的方法是将 WebDriverWait 与frame_to_be_available_and_switch_to_it 条件:
WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.ID, "iframe_id")))
此方法等待指定的帧可用,然后切换到它。
处理动态加载的元素:
如果元素是动态加载的,则可能需要使用 ExpectedConditions 来等待在与元素交互之前变得可见的元素:
WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.ID, "element_id")))
参考:
更多信息,请参阅:
以上是Selenium 可以在不显式切换框架的情况下与 iframe 元素交互吗?的详细内容。更多信息请关注PHP中文网其他相关文章!