2017-01-15 84 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); 
     } 
相关问题