使用Selenium WD处理AngularJS弹出窗口

时间:2016-01-15 12:44:19

标签: java angularjs selenium-webdriver

下图显示了单击“随机用户”文本时出现的弹出窗口; WD无法将焦点转移到您看到的弹出窗口。

Please check the picture here

以下是我使用的代码以及

中注释的各种试用代码
public static void teardownAppRetrieveOnce() throws InterruptedException {
    synchronized(obj){
        obj.wait(2000);
        driver.findElement(By.xpath(".//*[@id='sidebar']/nav/ul[2]/li[3]/button[1]/span/span")).click();
        System.out.println("Clicked sidebar..");
        obj.wait(2000);
        String winHandleBefore = driver.getWindowHandle();
        **driver.switchTo().window(winHandleBefore);
        driver.switchTo().findElement(By.id(".//*[@id='logoutButton']")).click();**
        ***driver.switchTo().activeElement().findElement(By.id(".//*[@id='logoutButton']")).click();***
        System.out.println("Clicked on logout");
        obj.wait(2000);
        driver.switchTo().alert().accept();
        obj.wait(2000);
        System.out.println("Logged out...");
    }
}

请帮助我澄清这种弹出窗口是否意味着要处理一个单独的新窗口或框架?

注意:

  • **表示我尝试失败的第一个解决方案
  • ***表示我尝试的第二个解决方案太失败了

1 个答案:

答案 0 :(得分:1)

我在WebDriver / AngularJS上遇到了很多麻烦。有时WebElement的本地Selenium方法有效 - 有时不行。最好的解决方案是在网页上执行原始Javascript。

我是你的情况,它会是这样的:

driver.executeScript("$x(\".//*[@id='logoutButton']\")[0].click()");