在 Selenium Web Driver 中处理警报后如何切换回主窗口

Posted

技术标签:

【中文标题】在 Selenium Web Driver 中处理警报后如何切换回主窗口【英文标题】:How to switch back to main window after handling alert in Selenium Web Driver 【发布时间】:2013-09-27 08:48:32 【问题描述】:

我必须编写一个 selenium 自动化测试脚本,其中测试必须创建一个模板,在表单中填写 Generalize 数据并手动输入特定详细信息(尝试在此处等待手动输入完成),然后单击 SAVE 按钮。但是,如果留下一些必填字段,系统会显示 javascript 的验证警报。我正在使用处理此警报 警报警报 = driver.switchTo().alert(); 警报.accept(); 在此之后,我想回到主页并等待几分钟来为缺少的字段写描述,然后点击保存按钮。

如何在 Selenium 网络驱动程序中实现这一点?

【问题讨论】:

仅仅因为您已切换到警报并不意味着控件会永久保留在警报中。一旦你执行点击 ok 控件就会返回到主页。 【参考方案1】:

当您首先处理警报时,您必须检查是否存在警报。我会使用这种方法:

public boolean isAlertPresent() 

  boolean presentFlag = false;

  try 

   // Check the presence of alert
   Alert alert = driver.switchTo().alert();
   // Alert present; set the flag
   presentFlag = true;
   // if present consume the alert
   alert.accept();

   catch (NoAlertPresentException ex) 
   // Alert not present
   ex.printStackTrace();
  

  return presentFlag;

在click here 中了解更多信息,也不要忘记逐步调试以了解出现/不出现的步骤警报。希望对您有所帮助。

【讨论】:

【参考方案2】:

接受警报框后。我们想通过获取窗口句柄详细信息来切换到主窗口。

//Stores the handle details

    String windowHandle=driver.getWindowHandles();

//Alert portion

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

    alert.accept();

//After switching back to main window..

    driver.navigate.windows(windowHandle);

//It takes to the main window....

【讨论】:

【参考方案3】:

您可以尝试以下代码: driver.navigate.back();

【讨论】:

【参考方案4】:

您可以使用switchTo() 方法从父窗口转到警报窗口:

<html>
Alert alrt = driver.switchTo().alert();   // Switching the control to Alert window

alrt.accept(); // to accept Yes to delete the task

//alrt.dismiss(); 

// to dismiss the action - once you click on YES, of course you don't have option to dismiss
</html>

现在,回答你的问题 -

一旦您从警报窗口中选择任何选项(例如 - 是/否),控件就会自动返回到父窗口或主窗口。你知道吗,隐藏的 div 也是如此。切换回父窗口是 HTML 弹出窗口的问题。

希望这会有所帮助。

【讨论】:

alert.accept() 之后;控制确实返回到主窗口。但是脚本中的下一条语句不会执行。另外 driver.manage().timeouts().implicitlywait(20, timeunit.MINUTES) 似乎不起作用。(尝试等待 20 分钟。让用户手动输入特定数据,并在 20 分钟后。自动脚本将点击保存按钮) 我和@Mitaleek 有同样的问题,有人找到解决方案了吗?

以上是关于在 Selenium Web Driver 中处理警报后如何切换回主窗口的主要内容,如果未能解决你的问题,请参考以下文章

javascript Selenium Web Driver 中 jQuery.active 的等价物

Selenium Web Driver _ 如何识别画布地图中的 Web 元素

Selenium Web-Driver 找不到元素(Selenium IDE 确实找到了它)

java,selenium web driver

Selenium Web Driver无法找到元素

selenium - js日历控件处理