【发布时间】:2019-01-02 11:35:42
【问题描述】:
我无法识别要处理的弹出窗口。这是我尝试过的:
string dialog4;
string dialog5;
try
{
IAlert alert = driver.SwitchTo().Alert();
dialog4 = alert.Text;
alert.Accept();
dialog5 = "nothing alert";
}
catch (NoAlertPresentException f)
{
try
{
dialog4 = driver.SwitchTo().Frame(0).Title;// "dialog4";//
dialog5 = driver.SwitchTo().Frame(1).Title;// "dialog5";//
}
catch (NoSuchFrameException e)
{
try
{
dialog4 = driver.SwitchTo().Window("iHTKK").Title;
dialog5 = "nothing window";
}
catch
{
dialog4 = "nothing 4";
dialog5 = "nothing 5";
}
}
}
- 点击红色高亮按钮后,代码等待 10 秒,webdrive 等待 30 秒,以确保有时间捕捉弹出窗口。
- 代码返回“nothing 4”和“nothing 5”。
- xPath 在这个项目中不能很好地工作,我不知道为什么,但我之前尝试过使用不同的元素,但 xPath 不起作用。
- 除非我响应此弹出窗口,否则我无法打开 F12。我可以在此弹出窗口存在之前和之后打开它。
- 我也试过找 在网站(所有 HTML 和 .js 文件)中使用 Debugger 和 Dom Explorer 选项卡中的 Developer tool (F12) 中的搜索功能获取弹出框中的信息。 什么都没找到。这不是我的网站。
- 我用 Window spy 附加了屏幕截图(AutoHotkey 附带的实用程序帮助识别窗口)。弹出窗口是由一个名为“jp2lancher.exe”的进程创建的。如果这值得关注,我的 Java 版本是 8.x 32 位。虽然弹出窗口似乎来自不同的进程,但在我响应该弹出窗口之前,我无法与 IE 交互。但是,我可以通过任务栏中的“关闭所有窗口”操作将其关闭,并且弹出窗口仍然存在。
【问题讨论】:
-
它是什么类型的应用程序?它看起来不像浏览器警报,所以
SwitchTo.Alert()不起作用。你在开发者模式下检查弹窗的元素类型了吗? -
存在此弹出窗口时,我无法打开 F12。我可以在响应此弹出窗口之前和之后打开。不在的时候。
-
这很奇怪。出现警报时 IE 可能不允许 F12,请尝试检查 Chrome 或 Firefox。如果我记得,Firefox 有一个用于浏览器事件的记录和播放扩展,它会生成一个脚本。这可能会给你一些想法。
-
IE 驱动程序只能处理由浏览器本身产生和拥有的警报样式对话框(使用 JavaScript
alert()、confirm()或prompt()函数创建的对话框)。正如您所注意到的,这个特定的对话框似乎不是其中之一,因为它是由另一个可执行文件创建的。这是怎么做到的?我的第一直觉是怀疑浏览器插件。无论如何,IE 驱动程序将无法处理此弹出窗口。 -
@JimEvans 我真的希望我不必使用新工具,因为这会给很多人带来更多工作。
标签: c# selenium-webdriver popup internet-explorer-11 ui-automation