如何在selenium webdriver中从一个弹出窗口切换到另一个弹出窗口

我的情景是:

  1. 主窗口 – >做一些活动。
  2. 单击“保存”按钮 – >“确认”弹出,然后单击“确定”和“取消”按钮。
  3. 单击确认弹出窗口上的确定按钮 – >使用确定按钮弹出另一个成功弹出窗口。
  4. 弹出成功后单击“确定”按钮。
  5. 切换到主窗口。

PopUp上面是HTML弹出窗口。 我如何在selenium中处理上述情况? 我是selenium的新人。 请帮助我。我坚持上述观点。

在此处输入图像描述

String ParentWindow = driver.getWindowHandle(); //switching from parent to pop up window for (String Child_Window : driver.getWindowHandles()) { driver.switchTo().window(Child_Window); WebDriverWait wait = new WebDriverWait(driver, 30);// 1 minute wait.until(ExpectedConditions.visibilityOfElementLocated(By.‌​name("test"))); driver.findElement(By.xpath("//input[@value='test']")).click‌​(); } driver.switchTo().window(ParentWindow); 

HTML

 

Saveでよろしいですか??

//当点击第一个弹出窗口的OK按钮时,相应的div将被销毁,并且会为第二个弹出新的div

 
Information

登録完了

单击“保存”按钮后,您应该按照以下方式处理这些信息对话框: –

 WebDriverWait wait = new WebDriverWait(driver,10); //For first dialog box wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("input.msgButton[id*='msgBox'][id*='FirstButton']"))).click(); //Now same as for second dialog box wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("input.msgButton[id*='msgBox'][id*='FirstButton']"))).click(); 

注意 : – 不需要切换窗口,这些对话框是简单的HTML元素,所以你需要通过查找这些元素来正常处理它。

Edited1 : – 如果您无法使用WebElement.click()单击,请尝试使用Actions类在单击之前移动该元素,如下所示: –

 Actions act = new Actions(driver); //For first dialog box WebElement firstDialog = wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("input.msgButton[id*='msgBox'][id*='FirstButton']"))); act.moveToElement(firstDialog).click().perform(); //Now same as for second dialog box WebElement secondDialog = wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("input.msgButton[id*='msgBox'][id*='FirstButton']"))); act.moveToElement(secondDialog).click().perform(); 

编辑2 : – 如果你仍然无法点击尝试使用JavascriptExecutor如下: –

 //For first dialog box WebElement firstDialog = wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("input.msgButton[id*='msgBox'][id*='FirstButton']"))); ((JavascriptExecutor)driver).executeScript("arguments[0].click()",firstDialog); //Now same as for second dialog box WebElement secondDialog = wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("input.msgButton[id*='msgBox'][id*='FirstButton']"))); ((JavascriptExecutor)driver).executeScript("arguments[0].click()",secondDialog); 

1)主窗口 – >做一些活动。

写下你的代码

2)单击“保存”按钮 – >“确认”弹出,然后单击“确定”和“取消”按钮。

确认大便

  Alert simpleAlert = driver.switchTo().alert(); String alertText = simpleAlert.getText(); System.out.println("Alert text is " + alertText); simpleAlert.accept(); 

3)单击确认弹出窗口上的确定按钮 – >使用确定按钮打开另一个成功弹出窗口。

用OK按钮弹出另一个成功。

 simpleAlert.accept(); 

4)弹出成功后点击OK按钮。

  WebDriverWait wait = new WebDriverWait(driver, 30); simpleAlert.accept(); 

5)切换到主窗口。

  driver.switchTo().defaultContent(); 

或者您可以使用以下代码

 String parentWindowHandler = driver.getWindowHandle(); // Store your parent window String subWindowHandler = null; Set handles = driver.getWindowHandles(); // get all window handles Iterator iterator = handles.iterator(); while (iterator.hasNext()){ subWindowHandler = iterator.next(); } driver.switchTo().window(subWindowHandler); // switch to popup window // perform operations on popup driver.switchTo().window(parentWindowHandler); 

由于是java脚本弹出,您可以使用alert类。

  WebDriverWait wait = new WebDriverWait(driver, 30); // With first Alert Alert firstAlert = wait.until(ExpectedConditions.alertIsPresent()); firstAlert.accept(); // With Second alert Alert secondAlert = wait.until(ExpectedConditions.alertIsPresent()); secondAlert.accept(); driver.switchTo().defaultContent();