更新:我意识到我检查元素的速度太快了,需要给hdoc_Doc时间加载。通过ID获取元素并触发click事件起作用。问题解决了。
我正在尝试导航到Startpage.com中几页搜索结果的第x页。我可以成功地将对象解析为IHTMLElement.getElementByID(“ 2”);我使用它的Click()事件触发它后面的JavaScript。文档仍然停留在搜索结果的第一页上。
private void GetNextPage(int i_page)
{
HTMLDocument hdoc_Doc = (HTMLDocument)wb1.Document; // wb1 is at page one of search results
IHTMLElement element_Page = hdoc_Doc.getElementByID(i_page.ToString());
if (null != element_Page)
{
// element_Page.click(); // Changed to below statement
hdoc_Doc.getElementByID("2").click(); // It now works
}
// Now check to see which titles are showing
IHTMLElement element_OneCheck = hdoc.getElementByID("title_1"); // Page one search results
IHTMLElement element_TwoCheck = hdoc.getElementByID("title_11"); // this is on page 2 search results if it gets there...
if (null != element_OneCheck)
Console.WriteLine("Page One Still...");
if (null != element_TwoCheck)
Console.WriteLine("Page Two found...");
}
结果是:“第一个页面仍...” 我什至尝试对文档采取直接行动:
hdoc_Doc.getElementByID("2").click;
这再次起作用,但是没有将文档前进到搜索结果的下一页。我还使用HTMLAgilityPack对此进行了解析,但这是为了解析不处理javascript链接,这就是我走这条路线的原因。 这是我要执行的链接:
<a href="javascript:;" class="numbers_st" onclick="mysubmit(20); return false;" id="2">2</a>
任何帮助将不胜感激!我在使用VS 2010的.NET 4.0上运行(是的,我知道它很旧,但是相对于更新版VS的免费版本是Ultimate,因此我坚持使用2010作为完整环境。)