Selenium - 如何获取窗口中打开的标签页数量?

5

我的测试用例:

  1. 打开浏览器并访问URL
  2. 在主页上点击链接 -> 这将打开一个新的窗口/选项卡。
  3. 返回到主页。
  4. 再次点击另一个链接。
  5. 确保先前打开的子窗口/子选项卡中显示出新内容。

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

如果链接在新选项卡中打开,我如何检查此测试用例(第一次单击主页上的链接会打开新选项卡。在主页上进一步单击任何链接后,内容将在同一新选项卡上刷新)?是否有一种方法可以计算窗口中选项卡的数量?

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


1
你似乎在过度复杂化这个问题。 Selenium 所做的不多也不少,与真实用户所做的相同(很好)。点击链接后,为什么不能然后验证其内容,然后从那里继续,而不是尝试切换窗口和标签。除非您需要强制执行某种特定的链接点击方式,否则只需“跟随流程”并测试当前选项卡(或窗口-您不应关心)。 - Andrew Regan
选项卡只是以不同的方式方便人类使用而显示的窗口,但浏览器扩展/插件(包括Selenium)将它们全部视为窗口。因此,您永远无法确定哪个是哪个 - 这取决于浏览器默认值和用户指定的设置。 - timbre timbre
@AndrewRegan KirilS 但是我如何获取选项卡的数量?它们是否具有可以用来识别它们的独特属性?它们将具有与主页相同的窗口ID,因此我无法使用windowHandle计数 - 这是正确的吗? - sanaku
我认为测试人员不应该试图计算制表符 - 这似乎只是因为你正在规避用户的流程而必要。 - Andrew Regan
1
我有点同意Andrew Regan的观点,计数并不能证明什么,也不是用户会做的事情。比如说,如果你想手动检查链接是否在现有窗口中打开,你会切换到该窗口并检查它显示了什么。Selenium也是一样:切换到该窗口并检查它是否显示了你期望的页面。如果你想手动检查链接是否在新窗口中打开,你会注意到你有哪些窗口,然后打开链接,看看所有“旧”窗口是否没有变化,是否有一个新窗口显示了期望的内容。Selenium也是一样的。 - timbre timbre
2个回答

2

前往主页并单击链接以打开新的选项卡/窗口。您可以按照以下步骤操作:
1. 打开浏览器并导航到测试网址
2. 单击右上角的"登录"链接/按钮 -> 它会带您进入新的选项卡/窗口。

以下是Selenium Java代码:

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

或者,

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

这是不正确的,因为它也会计算新打开的窗口。新窗口和新标签之间没有区别。 - Ankur Parihar

1
获取窗口中打开的标签页数:
    ArrayList<String> multipleTabs = new ArrayList<String>   (robot.getWebDriver().getWindowHandles());

获取ArrayList的大小,即计数值。
    System.out.println(multipleTabs.size());

因此,在一个窗口中打开的标签数量就是上述数组列表的大小。

为什么需要机器人? - Ripon Al Wasim
1
最佳解决方案是 driver.getWindowHandles().size(),供您参考。 - Freedom

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接