如何获取并不总是可见的HTML元素?

时间:2012-11-15 02:33:48

标签: html vb.net drop-down-menu web

我正在尝试制作一个程序,从我兄弟的学校用来显示你当前成绩的网站上提取信息。

我基本上已经完成了所有设置,但我遇到了一件事。

我正在使用WebBrowser,顺便说一句,我知道我应该使用WebRequests。

有一个组合框(下拉菜单),其中将填写注册到父母帐户的学生列表。

但是,在点击框之前,学生不会加载到组合框中。

我试图让WebBrowser点击组合框,但我无法让它工作。

以下是Combobox的HTML:

<a id="droplist" tabindex="1" href="#students" class="fg-button fg-button-icon-right ui-widget ui-state-default ui-corner-all ui-state-loading">SELECT A STUDENT<span class="ui-icon ui-icon-triangle-1-s"></span></a>

以下是DIV的HTML,其中包含未加载的名称:

<div id="students" class="hidden">
                 <ul></ul>
              </div>

以下是DIV的HTML,其中包含加载时组合框中的名称:

<div id="students" class="hidden">
                 <ul><li><a href="#" id="17743">Aaron P. Hailey </a></li><li><a href="#" id="16265">Aidan C. Hailey </a></li><li><a href="#" id="19305">Ethan B. Hailey </a></li></ul>
              </div>

我的猜测是,我必须发送额外的请求来获取信息或其他内容,但有人可以想到一个简单的解决方法吗?

我是VB的菜鸟,所以我在这方面遇到了很多麻烦。

谢谢,如果您需要任何其他信息,请与我们联系!

3 个答案:

答案 0 :(得分:2)

fireEvent方法 - 在对象上触发指定的事件。

设置下拉值后,您可能会尝试触发附加到下拉列表的事件(onchange)。

doc.getElementById("droplist").selectedindex=1
doc.getElementById("droplist").FireEvent("onchange")

参考this

答案 1 :(得分:0)

您正在查看的“组合框”附加了一个事件监听器。单击此按钮将触发,并向Web服务器发出ajax请求。您应该能够通过“网络”标签下的Chrome开发者工具隔离返回所需等级数据的URI。这会记录页面发出的所有HTTP请求。获得URI后,您应该可以直接向自己发出请求,从而能够自己解析响应。

答案 2 :(得分:-1)

将字段加载到页面后,您可以使用jquery的标准val函数访问它们的值。

$( '#FIELD1')VAL();