2015-09-06 95 views
0

切換到標籤我使用下面的代碼來測試窗口的句柄。「SWITCHTO」法不工作在瀏覽器

新頁面在新標籤中打開,但switchTo命令不切換到它。

public static void main(String[] args) { 
     Actions act = new Actions(driver); 
     driver.get("https://www.google.co.in"); 

     String parentWin = driver.getWindowHandle(); 
     act.keyDown(Keys.LEFT_CONTROL).perform(); 
     driver.findElement(By.linkText("Images")).click(); 

     for(String newWindow: driver.getWindowHandles()){ 
      driver.switchTo().window(newWindow); 
      driver.findElement(By.id("lst-ib")).sendKeys("hello world"); 
      driver.findElement(By.name("btnG")).click(); 
      driver.close(); 
     } 


     driver.switchTo().window(parentWin); 
     driver.findElement(By.linkText("Gmail")).click(); 


    } 

這個代碼在這裏評選爲正確答案:How to handle the new window in Selenium WebDriver using Java?從@CODEBLACK

+0

閱讀問題標題。然後閱讀詳細說明/方案,如果您認爲某些缺失將其放在評論框中。 https://open.bufferapp.com/how-to-read-more-and-remember-it-all/ – paul

回答

1

我是如何工作的理解是,每個驅動程序實例是一個瀏覽器,而不是一個標籤。但是......當我查閱如何做到這一點時,我看到代碼示例說明你的代碼應該工作。所以我不確定它是否曾經工作過,現在不是,或者他們在說標籤,但意味着新的瀏覽器窗口......無論哪種方式,我找到了一個解決方案。有兩種方法可以做到這一點。

  1. 在新瀏覽器窗口而不是選項卡中打開新頁面。這是一個簡單的解決方法...您只需將您的CTRL按鍵更改爲SHIFT即可。

    act.keyDown(Keys.SHIFT).perform();

  2. 另一種方式,我沒有嘗試過,但它在下面的鏈接描述。它基本上涉及使用CTRL + TAB鍵盤快捷鍵移動打開的選項卡。你將不得不跟蹤你的位置,並根據打開的標籤數量,這可能變得非常快速。

http://design-interviews.blogspot.com/2014/11/switching-between-tabs-in-same-browser-window.html

我會推薦#1,因爲它感覺少哈克,但你可能有它在一個選項卡中打開一個要求,必須去與#2。

+0

我想downvote,因爲我已經知道它「周圍的其他方式。」我特別想知道爲什麼'switchTo'不工作。 – paul

+0

我解釋說,在我的答案中......它工作的很好,你只是希望它在不打算被使用的情況下工作。如果你知道另一種選擇,那麼你應該把答案放在節省時間研究替代品的答案上。 – JeffC

+0

他是對的。目前Selenium不支持在選項卡之間切換(請注意,不支持並不意味着您無法解決問題) – Ardesco

相關問題