Selenium C# 如何处理警报 "Open Pick an app"?

Selenium C# How to handle Alert "Open Pick an app"?

我正在尝试使用 Selenium C# 为 Chrome

获取警报文本

但是这个警报似乎不同于普通的JavaScript警报,使用下面的代码returns一个错误异常:

string text = driver.SwitchTo().Alert().Text;

OpenQA.Selenium.NoAlertPresentException: no such alert

这是否被视为警报?有办法处理吗?

您看到的对话框显示在 OS 级别,因此您无法在 DOM 级别看到它或使用 Selenium 与之交互。如果你真的需要处理它,我建议你研究一个 OS 级别的自动化工具,它可以发送键或鼠标事件以你需要的方式处理对话框。

使用 Java,您可以使用 Java AWT 包中定义的 Robot class,因为它正是用于处理相关的本机输入事件与测试自动化,在处理 Selenium 和对话时经常被引用。但是,它在 .NET 世界中不存在,因此您需要寻找其他地方。快速 Google 搜索给了我一些可能有用的东西:

Robot Framework(使用 IronPython 支持 .NET)

另外,你可以用这样的方法来做更简单的事情:

GlobalMouseKeyHook

所以,总结一下。不,这不是您期望的普通警报,是的,您可以处理它,但它需要在 Selenium 世界之外采取一些步骤。

我们可以使用下面的 windows 表单 sendkeys 代码来接受 OS 级别的弹出窗口

 System.Windows.Forms.SendKeys.SendWait("{LEFT}");
 Thread.Sleep(1000);
 System.Windows.Forms.SendKeys.SendWait("{ENTER}");