【问题标题】:Selenium webdriver window handlingSelenium webdriver 窗口处理
【发布时间】:2013-10-24 05:46:14
【问题描述】:

我无法在窗口之间切换。光标在打开弹出窗口时被击中。无法进一步移动。 测试用例: 打开网址:http://voltaerp.cloudapp.net/VomsDemoV2/ 单击查询选项卡,然后单击子菜单项“外国查询”。这会将用户重定向到国外查询页面。现在单击绿色加号 + 以从 POP-UP 中选择一个项目。 我到现在都很好。一旦窗口打开,代码就会卡住。无法读取弹出窗口的 ID 或将驱动程序切换为弹出窗口以便我可以选择任何项目。请帮忙

这是我使用的代码

    Public void main (string[]args)

    {             
         WebDriver driver=new FirefoxDriver();

         driver.get(“voltaerp.cloudapp.net/VomsDemoV2/");

         driver.findElement(By.id("txtUser")).clear();

         driver.findElement(By.id("txtUser")).sendKeys("testmail_b@yahoo.com");

         Thread.sleep(500);

         driver.findElement(By.id("txtPass")).clear();

         driver.findElement(By.id("txtPass")).sendKeys("123456");

         driver.findElement(By.id("btnLogin")).click();

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

         WebElement parentlink= driver.findElement(By.id("ctl00_NavigationMenun3"));
         Actions hover= new Actions(driver);
         hover.moveToElement(parentlink).build().perform();


         WebElement sublink= driver.findElement(By.linkText("FOREIGN ENQUIRY"));
         Actions Fe= new Actions(driver);
         Fe.moveToElement(sublink).click().build().perform();

         driver.findElement(By.id("ctl00_ContentPlaceHolder1_gv_itms_ctl03_imgbtnAddItem")).click(); 

//无法进一步移动。当我调试代码时,cursur 不会进入下一条语句。

         Set<String> WindowIds = driver.getWindowHandles();
         Iterator<String> itr = WindowIds.iterator();
         String mainwindow = itr.next();
         String Popup = itr.next();

         driver.switchTo().window(Popup);

         driver.findElement(By.xpath(".//*[@id='txtItmDscrip']")).sendKeys("TESTITEM");

    }

【问题讨论】:

    标签: selenium webdriver


    【解决方案1】:

    由于应用程序需要身份验证,因此无法检查您的方案。但通常弹出不是一个窗口,而只是一个警报。尝试使用 Alert 类来处理它。

    Alert alert = driver.switchTo().alert();
    

    请参阅here 了解更多详情。在 Java 文档页面上,单击 LHS 框架上的警报链接。

    【讨论】: