2017-01-15 140 views
0

這是我試圖處理窗口的代碼,但在谷歌選項卡打開的網址。Chromedriver沒有打開鏈接一個新的標籤或窗口,而是預期的鏈接在當前標籤頁/窗口中打開

System.setProperty("webdriver.chrome.driver", "/home/ish/chromedriver");  

WebDriver driver =new ChromeDriver(); 

driver.get("http://google.com"); 
driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL+"n"); 
try { 
    Thread.sleep(3000); 
    for(String windowHandle:driver.getWindowHandles()) { 
     driver.switchTo().window(windowHandle); 
    } 
    driver.get("http://fb.com"); 
} catch (Exception e) { 
    System.out.println(e); 
} 

回答

0

在窗口句柄的迭代中,您將切換到它們兩個。最後一個開關將焦點返回到第一個窗口,並且鏈接在那裏打開。

你應該做的開關只對新窗口

System.setProperty("webdriver.chrome.driver", "/home/ish/chromedriver");  

WebDriver driver = new ChromeDriver(); 

driver.get("http://google.com"); 

String firstWindowHandle = driver.getWindowHandle(); 

driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL+"n"); 
try { 
    Thread.sleep(3000); 
    for(String windowHandle : driver.getWindowHandles()) { 
     if (!windowHandle.equals(firstWindowHandle)) { 
      driver.switchTo().window(windowHandle); 
     } 
    } 
    driver.get("http://fb.com"); 
} catch (Exception e) { 
    System.out.println(e); 
} 
+0

仍然無法正常工作..同樣的問題..沒有打開窗口。 –

0

驅動程序在同一個窗口中打開,因爲循環切換老手柄

代碼大概應該是這樣的下面

System.setProperty("webdriver.chrome.driver", "/home/ish/chromedriver");  

WebDriver driver =new ChromeDriver(); 

driver.get("http://google.com"); 
     driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL+"n"); 
     String currentHandle = driver.getWindowHandle(); 
     try { 
      Thread.sleep(3000); 
      for(String windowHandle:driver.getWindowHandles()) { 
       if(!currentHandle.equals(windowHandle)){ 
        driver.switchTo().window(windowHandle); 
        break; 
       } 
      } 
      driver.get("http://fb.com"); 
     } catch (Exception e) { 
      System.out.println(e); 
     } 
相關問題