浏览器窗口  

当打开一个新的浏览器窗口时,您需要切换到该窗口才能与之交互。

简单切换

在大多数情况下,您只需要使用另一个窗口,因此,从 Watir 6.18 开始,使用 Browser#switch_window 是与该窗口交互的最简单方法。它只能在只有两个窗口的情况下使用,它只切换到另一个窗口,不需要额外的定位。只需在需要时切换回来即可。

browser.switch_window
browser.button(id: 'close').click
browser.switch_window

窗口位置

如果您需要使用多个窗口,或者想要比 #switch_window 更多的控制,那么您需要能够指定要使用的窗口。

有三种主要的窗口选择器

  1. :title     - 通常是最简单的
  2. :url         - 通常与 Regexp 值一起使用(参见下面的示例)
  3. :element - 唯一的元素可能是最不容易出错的(从 Watir 6.18 开始!)
browser.window(title: 'new window')
browser.window(url: /my_page\.html/)
browser.window(element: browser.div(id: 'my-element'))

不再支持按索引定位

WebDriver 规范不要求驱动程序以任何特定顺序提供打开窗口的列表。从早期版本的 Watir 开始,许多用户在代码中使用 browser.widows.lastbrowser.window(index: -1) 来表示“最近打开的浏览器”。但情况并非总是如此(尤其是在 Safari 和 Internet Explorer 中)。在 Watir 7 中,我们移除了对 :index 作为定位器以及从 Browser#windows 中索引的支持。大多数情况下,Browser#switch_window 就足够了,如果不够,您需要使用其他 3 个定位器之一。

窗口使用

指定要使用的窗口后,您需要切换到该窗口。这可以通过 #use 方法完成,可以使用或不使用代码块。在不使用代码块的情况下,您还可以使用 Watir 6.7 中引入的 Browser#original_window 方法。

browser.window(title: 'new window').use
browser.button(id: 'close').click
browser.original_window.use

使用代码块与窗口交互时,Watir 会自动切换回您开始使用的窗口。

browser.window(title: 'new window').use {
  browser.button(id: 'close').click
}

窗口等待

使用窗口时,一个常见问题是窗口需要时间加载,因此同步一直很困难。从 Watir 6.18 开始,Watir 的所有等待功能都可用于窗口集合。例如,您可以通过等待特定数量的窗口来同步。

browser.link(id: 'create-new-window).click
browser.windows.wait_until(size: 2)
browser.switch_window

有关使用窗口的更多示例,请参阅 窗口切换规范

最后更新:2021 年 2 月 26 日