2013-06-21 131 views
2

对于我们页面上的某些网络链接,有外部链接指示用户说Facebook和Twitter。链接使用HMTL标签target="_blank",以便为我们的Twitter页面打开新的浏览器选项卡。Robot Framework验证新的浏览器选项卡已打开

我想验证1.新的浏览器选项卡已打开,2.将焦点设置为它并3.验证新浏览器选项卡中的页面元素。 #3部分将很容易,一旦我把重点放在它。任务#1和#2虽然,我不明白,也不能找到任何人谈论这个。

使用Selenium2Library(webdriver的)

回答

2

硒不支持选项卡(如2013年6月,硒2.33.0),总是打开新窗口代替。如果你的测试打开一个新标签,祝你好运。

这就是说,如果它正确地打开一个新窗口,使用Select Window

Select Window | url=https://twitter.com/expectedPage 

我工作的webdriver(2.33.0)代码Java,希望这将有助于一点点。你所描述的问题是我的机器人知识开始脱落的地方。

@Test 
public void targetBlankLinkTest() { 
    // load the website and make sure only one window is opened 
    driver.get(file("TargetBlankLinkTest.html")); 
    assertEquals(1, driver.getWindowHandles().size()); 

    // click the link and assert that a new window has been opened  
    driver.findElement(By.linkText("Follow us on Twitter!")).click(); 
    Set<String> windowHandles = driver.getWindowHandles(); 
    assertEquals(2, windowHandles.size()); 

    // switch to the new window and do whatever you like 
    // (Java doesn't have Switch Window functionality that can select by URL. 
    // I could write it, but have been using this trick instead) 
    for (String handle : windowHandles) { 
     if (handle != driver.getWindowHandle()) { 
      driver.switchTo().window(handle); 
     } 
    } 
    assertThat(driver.getCurrentUrl(), containsString("twitter.com")); 
} 
+0

谢谢,Slanec。但是,是否有任何方法至少验证新的浏览器选项卡是否已打开? – Dave

+0

@Dave您可以得到的最接近的是['Get Window Identifiers'](http://rtomac.github.io/robotframework-selenium2library/doc/Selenium2Library.html#Get%20Window%20Identifiers),它将在返回一个更多的值之后窗户已被打开。为此,我始终使用它的Java对象。 –

+0

...或者简单地做'选择窗口'方法并验证它的内容('标题应该'),如果失败了,它还没有被打开。 –

0

我建议:

1. First, acquire new window handle by using the switchTo() method. 
2. Then bring that window into focus using a JavaScriptExecutor: 
    ((JavascriptExecutor) myTestDriver).executeScript("window.focus();"); 
    Using switchTo() without a javascript executor to get focus , is not 
    very reliable in my opinion. 
3. Next, do what you need to do in that window. 
4. Use driver.close() to close that window. 
5. Verify you are back at the parent window with focus. 
0

如果你想验证一个新的标签已打开或不那么你可以比较之前和点击一个链接/元件,它打开了一个新的后窗口句柄标签。只要按照此代码可能会帮助你。

这里$ {LINKDIN}是在新选项卡中打开的元素。所以在点击它之前,将窗口句柄保存在变量中,并且在再次单击该元素之后,将窗口句柄保存在变量中。现在如果打开一个新的选项卡,那么这两个变量的值将会不同,如果没有打开新的选项卡,那么这两个变量值都是相同的。这样就可以验证ne wtab打开。

Go Back 
${Current_window}  List Windows 
Click Element   ${LINKDIN} 
${New_Windows_list}  List Windows 
Should Not Be Equal  ${Current_window} ${New_Windows_list} 
0

使用机器人Selenium2Library关键字:

@{windows} = List Windows 
${numWindows} = Get Length ${windows} 
${indexLast} = Evaluate ${numWindows}-1 
Should Be True ${numWindows} > 1 
Select Window @{windows}[${indexLast}] 
Location Should Contain /my/url/whatever 
Title Should Be myTitle 
Page Should Contain ... 

你的想法。

相关问题