使用java在selenium webdriver中打印第三个窗口的标题

时间:2016-11-13 18:37:44

标签: java selenium selenium-webdriver window-handles

我的情景是:

我有基本网址:www。****。com

打开URL后,我点击一个名为“Test”的链接,它会打开另一个窗口说“B”,在窗口B中我点击按钮“button1”,它会打开另一个窗口“C”。我必须得到窗口C的标题。

以下是我的示例代码:

    driver.get("http://www.****.com/");
    WebElement menu_ele        =driver.findElement(By.tagName("a").linkText("PRACTICE"));
    Actions act = new Actions(driver);
    act.moveToElement(menu_ele).build().perform();
    Thread.sleep(1000);
    driver.findElement(By.tagName("a").linkText("Demo Sites")).click();
    driver.findElement(By.tagName("a").linkText("http://www.****.com/Practiceform/")).click();
    Set<String> window = driver.getWindowHandles();
    String window1 = (String) window.toArray()[0];
    String window2 = (String) window.toArray()[1];
   // String window3 = (String) window.toArray()[2];
    driver.switchTo().window(window2);
    driver.findElement(By.id("button1")).click();
    Set<String> win = driver.getWindowHandles();
    String window3 = (String) window.toArray()[0];
    driver.switchTo().window(window3);
    System.out.println(driver.getTitle());
    driver.manage().window().maximize();

我无法切换到窗口C.我知道这不是最佳做法,建议一些方法来实现它。

1 个答案:

答案 0 :(得分:0)

在您的代码中,我看到您正在尝试切换到window3,但是您使用String window3 = (String) window.toArray()[0];

将其分配到第一个窗口

使用

String window3 = (String) window.toArray()[2];

代替。

您编辑的代码

    Set<String> window = driver.getWindowHandles();
    String window1 = (String) window.toArray()[0];
    String window2 = (String) window.toArray()[1];
   // String window3 = (String) window.toArray()[2];
    driver.switchTo().window(window2);
    driver.findElement(By.id("button1")).click();
    Set<String> win = driver.getWindowHandles();
    String window3 = (String) window.toArray()[2]; //get the third window from the set
    driver.switchTo().window(window3);
    System.out.println(driver.getTitle());
    driver.manage().window().maximize();