Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MSHTML中的弹出窗口_C#_Mshtml_Webautomation - Fatal编程技术网

C# MSHTML中的弹出窗口

C# MSHTML中的弹出窗口,c#,mshtml,webautomation,C#,Mshtml,Webautomation,我正在开发一个web自动化应用程序 一切正常。现在我陷入了一个问题 当用户单击链接时,会打开一个新的弹出窗口,其中包含输入字段和按钮 用户填写字段并按下按钮 我想自动执行此操作,但问题是,当我单击链接并显示弹出窗口时,不会触发“文档完成”事件 因此,我无法解析这个弹出式html并使其自动化 有人有什么有用的建议吗?这很棘手。我自己也在做类似的事情。首先需要检查对话框是Javascript还是messagebox。通过javascript对话框,您可以尝试以下操作: . 根据作者的说法,它也可以

我正在开发一个web自动化应用程序

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

当用户单击链接时,会打开一个新的弹出窗口,其中包含输入字段和按钮

用户填写字段并按下按钮

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

因此,我无法解析这个弹出式html并使其自动化


有人有什么有用的建议吗?

这很棘手。我自己也在做类似的事情。首先需要检查对话框是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;
可能重复的