2013-06-21 186 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 ... 

你的想法。

相關問題