如何使用 watir 将焦点从 iframe 更改回主页?

How can I change the focus from an iframe back to main page using watir?

我有一个嵌套的 iframe,看起来像这样

<iframe class="first">
   <button></button>
   <iframe class="second">
      <button></button>
   </iframe>
</iframe>

我切换到第二个 iframe 以处理该 iframe 中的元素,现在我想返回并处理第一个 iframe 中的元素。但是出于某种原因我无法使用 watir 退出 iframe...

我试过使用 $b.frame(index: 0).locate - 我收到 "unable to locate frame" 错误

我也试过$b.iframe(class: "first").locate,但也没用

请帮忙!

Watir 为您处理浏览器上下文切换。您只需要在元素的定义中包含完整的 iframe 路径。

Watir 延迟加载所以这实际上并不定位它们,只是存储它们的位置信息

b1 = browser.iframe(class: 'first').button
b2 = browser.iframe(class: 'first').iframe(class: 'second').button

要单击第二个按钮,Watir 会自动切换到第一帧上下文,然后是第二帧上下文,然后单击该按钮

b2.click

Watir 将在任何浏览上下文之间自动切换,无需明确指定:

b1.click
b2.click
b1.click

您不需要显式更改上下文,只需与您需要使用的下一个元素交互,但其中任何一个都会让您返回顶级浏览上下文:

browser.exist?
browser.iframe.exist?