【发布时间】:2017-06-18 09:24:57
【问题描述】:
我正在尝试自动化我们的一些流程,其中包括登录到外部网页、单击链接以展开详细信息,然后获取显示的所有详细信息。
我已经登录了进程,一旦展开就可以获取所有详细信息。
问题在于点击链接。该链接的定义如下(我已经删除了Submit 方法的实际作用,因为代码很长并且可能无关紧要。显然img 只是作为示例的占位符):
<a id="form:SummarySubView:closedToggleControl" onclick="A4J.AJAX.Submit(...); return false;" href="#">
<img ... />
</a>
我使用这些数据如下:
void browser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
WebBrowser browser = (WebBrowser)sender;
HtmlElement expandDetails = browser.Document.GetElementById("form:SummarySubView:closedToggleControl");
//When open ID for element is "form:SummarySubView:openToggleControl"
if(expandDetails == null) //If already expanded
{
//Stuff
}
else
{
expandDetails.InvokeMember("click"); //Click on element to run AJAX
}
}
在运行expandDetails.InvokeMember("click"); 时,browser_DocumentCompleted 会按预期再次调用,但文档与之前相同,expandDetails 再次以“已关闭”ID 找到。这意味着我正在寻找的细节永远不会显示出来。
如何在 AJAX 脚本正确运行后访问文档?
添加Timer 来延迟检查文档似乎没有用。
【问题讨论】:
标签: c# ajax webbrowser-control screen-scraping