2016-02-27 104 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()); 
相關問題