2012-07-06 176 views

回答

5

硒现在无法切换标签。因此,我们强制浏览器在新窗口中打开链接,但由于我们可以切换窗口,所以我们强制浏览器采取这种方法。这可能被修复在更高版本

+0

清楚,谢谢 – khris 2012-07-06 08:50:13

10

Selenium有能力切换标签现在一天。下面的代码1:适用于Firefox,代码2:适用于IE和Chrome,我们可以使用Robot类,控件不会自动移动到当前选项卡,因此我们需要使用窗口句柄方法切换到当前选项卡。下面给出的代码将很好用当我们运行单个脚本时,但作为一个套件运行时,您可能会感到执行关键板事件时的痛苦。为了避免我们在selenium-Java中通过使用javascript执行程序使用用户定义的javascript方法得到其他可能性。

我们可以在窗口和标签之间进行切换,方法是标识为打开的每个窗口分配的名称,名称将以字母数字字符分配。

***Code 1*** 
    //First tab(default tab) 
    driver.navigate().to("http://www.google.com"); 
    driver.manage().window().maximize(); 

    //second tab 
    driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL + "t"); 
    driver.navigate().to("https://yahoo.com"); 

    //third tab 
    driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL + "t"); 
    driver.navigate().to("http://www.google.com"); 

    //move to very first tab. 
    driver.findElement(By.cssSelector("body")) 
      .sendKeys(Keys.CONTROL + "\t"); 

    // To close the current tab.  
    driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL + "w"); 
    **code 2** 
    driver.navigate().to("http://www.google.com"); 
    driver.manage().window().maximize(); 


    Robot robot = new Robot(); 
    robot.keyPress(KeyEvent.VK_CONTROL); 
    robot.keyPress(KeyEvent.VK_T); 

    Set<String> handles = driver.getWindowHandles(); 
    List<String> handlesList = new ArrayList<String>(handles); 
    String newTab = handlesList.get(handlesList.size() - 1); 

    // switch to new tab 
    driver.switchTo().window(newTab); 
    driver.get("http://www.yahoo.com"); 
相关问题