2017-02-24 72 views
0

與硒2合作的代碼之間的切換停止使用Selenium 3.硒3:標籤

工作這個代碼不工作了既不在Chrome也不在Firefox瀏覽器。

driver.get("http://the-internet.herokuapp.com/windows"); 
String firstWindow = driver.getWindowHandle(); 
driver.findElement(By.linkText("Click Here")).click(); 
driver.switchTo().window(firstWindow); 

我發現,火狐有解決方法:

driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL, Keys.PAGE_DOWN); 

然而,沒有適用於Chrome瀏覽器。
請幫助

+0

[與Java使用硒webdriver的開關選項卡]的可能的複製(http://stackoverflow.com/questions/12729265/switch-tabs-using-selenium-webdriver-with-java) –

+0

你能提供一個例外?什麼「不再工作」? –

+0

給耆那教徒。如果你看看你提供的鏈接,就像我指出的那樣,它使用了不適用於Selenium 3的代碼。 – Vladimir

回答

1

我覺得你確實是從一個新的bug痛苦(或者預期的行爲?)。

檢查出您的代碼並對其進行測試後,我注意到即使在Chrome中打開並關注了一個新​​選項卡,driver也不會自動切換到該選項卡。

您必須添加.switchTo().window(secondWindow),以便您的driver切換到新的(和活動)選項卡。

因此,.switchTo()不會聚焦選項卡,driver正在使用,因此它看起來就像停留在第二個選項卡中,即使driver本身已切換回第一個窗口。

下面是一些代碼,可以幫助你理解這個問題:

driver.get("http://the-internet.herokuapp.com/windows"); 
    String firstWindow = driver.getWindowHandle(); 
    System.out.print("First windowhandle: " + firstWindow + "\n"); 

    System.out.print("Clicking on 'Click Here' \n"); 
    driver.findElement(By.linkText("Click Here")).click(); 

    Set<String> stringSet = driver.getWindowHandles(); 
    System.out.print("All windowhandles: " + stringSet + "\n"); 
    List<String> handles = new ArrayList<>(stringSet); 

    System.out.print("Switching to new window \n"); 
    driver.switchTo().window(handles.get(1)); 
    //wait for Title to change to second tab title 
    new WebDriverWait(driver, 10).until(ExpectedConditions.titleIs("New Window")); 

    System.out.print("Second (and current) windowhandle: " + driver.getWindowHandle() + "\n"); 

    System.out.print("Switching back to first Window. \n"); 
    driver.switchTo().window(firstWindow); 

    //wait for Title to change back to first title 
    new WebDriverWait(driver, 10).until(ExpectedConditions.titleIs("The Internet")); 

    System.out.print("Last used windowhandle: " + driver.getWindowHandle() + "\n"); 

如果你運行這段代碼,你會發現兩件事情:
一)driver將切換到正確的選項卡(見WindowHandle輸出)
b)目前使用的標籤driver使用將不會在Chrome中正確集中

這似乎是一個錯誤。

+0

謝謝羅伯特的迴應。在發佈我的問題之前,我在您的代碼段中進行了相同的調查。這是一個錯誤!誰來解決它? :-)硒3真的是越野車。例如,Firefox驅動程序沒有實現Actions類。 – Vladimir