在Selenium中定位新标签

时间:2017-10-24 08:27:24

标签: ruby selenium webdriver

我有一个测试,基本上会点击页面页脚上的链接。我们有三个,他们都通往不同的地方:

  • Google文档表单
  • 培训页面
  • 许可页面

以下代码生成正确的断言并单击链接:

if @link_selection.eql?('leave feedback')
    @wait.until {@driver.find_element(css: => 'cell.feedback').click}
    @wait.until {@driver.find_element(css: => 'a[href="https://docs.google.com/a/showmyhomework.co.uk/forms/d/1LP8BZ950TSXXDR1HuVz7yhv9Cp3h6scmQtNFqIRW_XI/viewform"').click}
    puts "Leave feedback link clicked"

我为每个不同的链接位置进行了模块化。 单击链接后,它会自然在新的浏览器选项卡中打开。然后我想扩展测试,然后查看打开的选项卡,然后在该页面上进行断言。我想问一下如何处理Selenium中的新标签及其中的方式:

一个。它断言新标签是打开的(并切换到它)
湾然后它可以断言页面的标题或标题(以便测试确保页面已被打开。

1 个答案:

答案 0 :(得分:0)

c#中的以下代码,请随时将其更改为ruby。

// This gets the window handles of open available windows(also, tabs)
var availableWindows= driver.WindowHandles;

要切换到与页面标题相关的新标签页:

 string Title= "whateveryourpagetitleis";
    foreach (string windowId in availableWindows)
                {
                    string windowTitle = driver.SwitchTo().Window(windowId).Title;
                    if (windowTitle.ContainsIgnoreCase(title))
                    {
                        driver.SwitchTo().Window(windowId);
                    }
                }

您可以使用这些功能,然后相应地使用您的断言。但是,您正在寻找的是WindowHandles