如何使用Selenium库和Python在框架之间切换?

时间:2020-07-11 14:49:34

标签: python selenium jsp selenium-webdriver frames

我试图将框架“ top”切换为“ body”。我尝试了不同的方法,但是我做不到。来源太多,但任何一个都不起作用。有什么问题吗? HTML结构在链接中。页面是“ jsp”。

# 1 
driver.switch_to_frame("body")

# 2
wait.until(EC.frame_to_be_available_and_switch_to_it((By.XPATH,"/html/frameset/frame[3]")))

也许是可见性?

2 个答案:

答案 0 :(得分:1)

从“顶部”框架切换到默认内容,然后切换至“正文”。

driver.switch_to_default_content()

答案 1 :(得分:0)

正如所提到的,您尝试直接从一帧切换到另一帧,这些帧在DOM中处于同一级别,例如:

<iframe name="top"></iframe>
<iframe name="body"></iframe>

在使用以下方法切换到另一帧之前,您需要切换到defaultContent

driver.switch_to.default_content()

然后尝试切换到第body

driver.switch_to_frame("body")

除非目标帧位于当前帧内,否则我们不能直接从一帧切换到另一帧。

例如:

<iframe name="top">
    <iframe name="body"></iframe>
</iframe>

然后,我们可以使用:

driver.switch_to_frame("top")
driver.switch_to_frame("body")