【发布时间】:2020-05-09 12:16:11
【问题描述】:
您好,我正在使用 Internet Explorer 无头模式在我的脚本上执行自动化任务,但我遇到了一个问题,有时在某些页面上冲浪时会出现身份验证弹出窗口,这些窗口显示为登录页面,但不是通过 HTML弹出窗口,但更多的是窗口弹出窗口。
我想控制弹出窗口,所以当它弹出时,它将在 TOP 上可见。现在它非常随机,有时会显示在所有程序的顶部,但有时会在后台很远,然后自动化失败,因为用户没有看到弹出窗口。
硬编码用户名和密码不是一种选择。
有人知道我如何操纵弹出窗口(见附件中的截图)并最终至少将其放在屏幕顶部吗?
谢谢!
【问题讨论】:
-
您可以使用 UI 自动化检测对话框的打开,使用
WindowPattern.WindowOpenedEvent设置事件处理程序 (Automation.AddAutomationEventHandler),从AutomationElement.RootElement(桌面)开始,如所述 @ 987654322@。 VB.Net 代码示例,做同样的事情,here。 -
当你得到Dialog的句柄(在事件处理程序的
AutomationEventArgs对象的属性中设置),你可以使用SetWindowPos或SetForegroundWindow将它移到前台,因为WindowPatter.SetWindowVisualState方法可能无法按预期使用此类对话框。 -
@Jimi 感谢您的输入,虽然我无法实现SetForegroundWindow,但我明白了它是如何工作的,所以我使用了AppActivate
标签: vb.net popup shdocvw shdocvw.internetexplorer