【问题标题】:PopUp in MSHTMLMSHTML 中的弹出窗口
【发布时间】:2011-10-16 14:05:04
【问题描述】:

我正在开发一个网络自动化应用程序。

一切正常。现在我陷入了一个问题。

当用户点击一个链接时,会打开一个带有输入字段和按钮的新弹出窗口,

用户填写字段并按下按钮。

我想自动执行此操作,但问题是当我单击链接并显示弹出窗口时,不会触发 Document_Completed 事件。

所以我无法解析这个弹出的 html 并将其自动化。

任何机构有任何有用的建议吗?

【问题讨论】:

标签: c# mshtml webautomation


【解决方案1】:

这非常棘手。我自己也一直在做类似的事情。您首先需要检查对话框是 Javascript 还是消息框。使用 javascript 对话框,您可以尝试以下操作: http://msdn.microsoft.com/en-us/magazine/gg309183.aspx。根据作者的说法,它也可以与系统对话框一起使用,但不是很好。如果你不能完成这项工作,你将不得不深入挖掘并尝试通过 Win32Api 进行操作。

系统对话框不是您通常用于此类自动化的 DOM 的一部分。它没有 ID,并在与操作系统的其余部分分开的循环中运行(在非常低的级别上,它故意与所有内容分开)。要进一步了解对话框及其在 Windows 中的工作方式,请查看:http://www.winprog.org/tutorial/dialogs.html

我没有完整的解决方案,但我正在努力解决。

【讨论】:

    【解决方案2】:

    可以通过WindowFromPoint 函数处理弹出窗口。然后你可以使用IAccessible 接口来访问弹出的元素。像这样的:

    const uint OBJID_NATIVEOM = 0;
    Guid  IID_IAcce = new Guid("{618736e0-3c3d-11cf-810c-00aa00389b71}");
    
    IntPtr inpt = WindowFromPoint( p);
    
    object ptr1 = null;
    int l;
    
    l = AccessibleObjectFromWindow(inpt, OBJID_NATIVEOM,    IID_IAcce.ToByteArray(), ref ptr1);
    var acc = ptr1 as IAccessible;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-06
      • 2011-09-30
      • 2021-03-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多