C# MSHTML中的弹出窗口
我正在开发一个web自动化应用程序 一切正常。现在我陷入了一个问题 当用户单击链接时,会打开一个新的弹出窗口,其中包含输入字段和按钮 用户填写字段并按下按钮 我想自动执行此操作,但问题是,当我单击链接并显示弹出窗口时,不会触发“文档完成”事件 因此,我无法解析这个弹出式html并使其自动化C# MSHTML中的弹出窗口,c#,mshtml,webautomation,C#,Mshtml,Webautomation,我正在开发一个web自动化应用程序 一切正常。现在我陷入了一个问题 当用户单击链接时,会打开一个新的弹出窗口,其中包含输入字段和按钮 用户填写字段并按下按钮 我想自动执行此操作,但问题是,当我单击链接并显示弹出窗口时,不会触发“文档完成”事件 因此,我无法解析这个弹出式html并使其自动化 有人有什么有用的建议吗?这很棘手。我自己也在做类似的事情。首先需要检查对话框是Javascript还是messagebox。通过javascript对话框,您可以尝试以下操作: . 根据作者的说法,它也可以
有人有什么有用的建议吗?这很棘手。我自己也在做类似的事情。首先需要检查对话框是Javascript还是messagebox。通过javascript对话框,您可以尝试以下操作: . 根据作者的说法,它也可以与系统对话框一起工作,但这并不适合。如果你不能做到这一点,就我所知,你必须深入挖掘并尝试通过Win32Api进行操作 系统对话框不是通常用于此类自动化的DOM的一部分。它没有ID,与操作系统的其余部分在一个单独的循环中运行(在一个非常低的级别上,它故意与所有内容分开)。要进一步了解对话框及其在Windows中的工作方式,请查看:
我没有一个完整的解决方案,但我正在努力解决这个问题。可以通过
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;
可能重复的