2016-02-27 105 views
4

我的测试用例:Selenium - 如何获取窗口中打开的标签数量?

  1. 打开浏览器,访问URL
  2. 点击主页上的链接 - >这将打开一个新窗口/新标签。
  3. 返回主页。
  4. 点击另一个链接。
  5. 确保新的内容显示出来之前打开的子窗口/子选项卡上从第2步

我可以检查通过获取windowhandles的计数打开的窗口数量,并断言,它等于2 - 确保在单击第二个链接时,内容在同一个子窗口上刷新,并且不会打开另一个新窗口。

如果这些链接在新标签页中打开,我该如何检查这个测试用例(首次点击主页上的链接时新标签打开,并进一步点击主页上的任何链接,内容刷新相同的新标签)?有没有办法计算窗口中的选项卡数量?

或者硒是否强制将新选项卡作为新窗口打开?

+1

你似乎过于复杂这一点。硒没有更多,真正的用户会做(不错)。点击链接后,为什么不能*然后*验证其内容,并从那里开始,而不是尝试切换窗口和制表符。除非您需要强制执行某些特定的点击链接方式,只需“按流程操作”并测试**当前**选项卡(或窗口 - 您不应该在意) –

+0

选项卡为便于人类,但浏览器扩展/插件,包括硒,看到他们都是Windows。所以你永远无法知道哪个是哪一个 - 这取决于用户指定的浏览器默认值和设置。 –

+0

@AndrewRegan KirilS但我怎样才能得到一个选项卡的计数?他们有没有可以用来识别他们的独特属性?他们将拥有与主页相同的窗口ID,因此我无法使用windowHandle计数 - 是否正确? – sanaku

回答

2

要获得标签的数量在一个窗口

ArrayList<String> multipleTabs = new ArrayList<String> (robot.getWebDriver().getWindowHandles()); 

开计获取的ArrayList中即大小)的计数值

System.out.println(multipleTabs.size()); 

因此打开的标签数的计数在窗口中只是上面的数组列表的大小

+0

为什么它需要机器人? –

0

转到主页,然后单击链接打开新的选项卡/窗口。然后写下面的代码:

ArrayList<String> tabs = new ArrayList<String>(driver.getWindowHandles()); 
System.out.println("No. of tabs: " + tabs.size()); 

OR,

Set<String> allWindowHandles = driver.getWindowHandles(); 
ArrayList<String> tabs = new ArrayList<String>(allWindowHandles); 
System.out.println("No. of tabs: " + tabs.size()); 
相关问题