我正在开发一个网络自动化应用程序。
每件事都运行良好。现在我陷入了一个问题。
当用户单击链接时,会打开一个带有输入字段和按钮的新弹出窗口,
用户填写字段并按下按钮。
我想自动执行此操作,但问题是当我单击链接并显示弹出窗口时,不会触发 Document_Completed 事件。
所以我无法解析这个弹出的 html 并使其自动化。
任何机构有任何有用的建议吗?
我正在开发一个网络自动化应用程序。
每件事都运行良好。现在我陷入了一个问题。
当用户单击链接时,会打开一个带有输入字段和按钮的新弹出窗口,
用户填写字段并按下按钮。
我想自动执行此操作,但问题是当我单击链接并显示弹出窗口时,不会触发 Document_Completed 事件。
所以我无法解析这个弹出的 html 并使其自动化。
任何机构有任何有用的建议吗?
这是非常棘手的。我自己也一直在做类似的事情。您首先需要检查对话框是 Javascript 还是消息框。使用 javascript 对话框,您可以尝试以下操作:http: //msdn.microsoft.com/en-us/magazine/gg309183.aspx。根据作者的说法,它也可以与系统对话框一起使用,但不是很好。如果你不能完成这项工作,你将不得不深入挖掘并尝试通过 Win32Api 进行操作,据我所知。
系统对话框不是您通常用于此类自动化的 DOM 的一部分。它没有 ID,并在与操作系统的其余部分分开的循环中运行(在非常低的级别上,它故意与所有内容分开)。要进一步了解对话框以及它们在 Windows 中的工作方式,请查看: http: //www.winprog.org/tutorial/dialogs.html
我没有完整的解决方案,但我正在努力。
可以按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;