PhantomJSDriver:无法切换到新打开的浏览器窗口

时间:2015-12-18 07:49:44

标签: java selenium-webdriver phantomjs ghostdriver

我一直在尝试使用PhantomJSWebDriver框架来使用Headless浏览器自动化应用程序。主要问题是我们可以在firefox或IE窗口中成功切换窗口,这里我无法在基于句柄的窗口之间切换。请帮我。

以下是我到目前为止尝试过的代码。

    System.setProperty("phantomjs.binary.path", file.getAbsolutePath());        
    driver = new PhantomJSDriver();  
    driver.get(application url);          

    driver.manage().timeouts().implicitlyWait(100, TimeUnit.SECONDS);

    WebElement txtUsername = driver.findElement(By.id("it_C_C5"));        
    txtUsername.sendKeys("sreenis");        
    WebElement txtPassword = driver.findElement(By.id("it_C_C7"));
    txtPassword.sendKeys("sreeni");
    WebElement btnLogin = driver.findElement(By.id("ic_C_C8"));        
    btnLogin.click();

    Thread.sleep(10000);

    String winTitle = "Role profile selection";

    boolean bool = switchWindow(winTitle);
    if (bool){
        System.out.println("Page title is: " + driver.getTitle());
        driver.quit();     
    }
    else {
        System.out.println("Switch to window '" + winTitle + "' failed!");
        driver.quit();
    }

 public static boolean switchWindow(String windowtitle){

    String mainWindowsHandle = driver.getWindowHandle();
    Set<String> handles = driver.getWindowHandles();
    System.out.println(handles.size());
    for(String winHandle : handles){            
        driver.switchTo().window(winHandle);
        System.out.println(driver.getTitle());
        if(driver.getTitle().toLowerCase().equals(windowtitle)){
            return true;
        }           
    }

    driver.switchTo().window(mainWindowsHandle);
    return false;
}

当我尝试在集合中打印窗口标题时,它只打印父窗口而不打印其他窗口。我无法猜测发生了什么,因为没有任何东西可以看到,它是无头测试。请建议我有其他任何方式,以便我可以使用许多浏览器窗口测试应用程序。

1 个答案:

答案 0 :(得分:0)

Actions act = new Actions(d);
    act.contextClick(elements).sendKeys("W").perform();

    Set<String> win = d.getWindowHandles();
    Iterator <String> itrwin = win.iterator();
    String parent = itrwin.next();
    String child = itrwin.next();
    d.switchTo().window(child);

首先使用findElement()标识一个Web元素,并将其存储在element中。