Vbs从网页获取元素无法正常工作

时间:2014-05-31 15:51:04

标签: html vbscript

我希望在我的vbs中得到值'24',它设置为id为'test'的div,

我的Html脚本是:

<html><body>
Welcome <br /> Value: = <div id="test">24</div> 
<br> Name: <p id="name">Someone</p><br>
</body></html>

我的Vbs是:

on error resume next
set ie=createobject("internetExplorer.Application")

ie.navigate "http://localhost/h/getid.html"
ie.visible = false
wscript.sleep 2000

dim val
set val =ie.document.getElementsById("test").item(1).value
wscript.echo "value is= "& val

但是输出没有显示值24,它只是回显 - 值是=

我怎样才能获得这个价值?我是否需要对HTML代码或vbs进行任何更正?

请帮助我,谢谢

3 个答案:

答案 0 :(得分:0)

您似乎需要使用getElementsById更改getElementById

答案 1 :(得分:0)

您不应该在此处提出一个问题,该问题涉及具有活动“On Error”的脚本 继续下一步“。这是浪费每个人的时间。通过隐藏错误/注意 错误信息,你可以自己解决问题(大部分时间)。

删除/取消OERN,你得到

set val =ie.document.getElementsById("test").item(1).value
==>
... runtime error: Object doesn't support this property or method: 'ie.document.getElementsById'

即使你不认识拼写错误,谷歌搜索“html dom getelementsbyid” 将重新路由到“Ergebnissefür[ie results for html dom getelementbyid”]。 请按照第一个链接之一(e.g.)来了解有关该方法的知识。

那样下一个错误:

set val =ie.document.getElementById("test").item(1).value
==>
... runtime error: Object doesn't support this property or method: 'ie.document.getElementById(...).item'

不会让你大吃一惊。元素不是项目/元素的集合。 [顺便说一句:你不应该 在没有至少基本测试的情况下在这里发布答案。

下一个版本

set val =ie.document.getElementById("test").value

应该引发一个红色警报:一个带有Set的赋值,但是一个想要成为a的正确值 对象的属性。这是完全错误的。所以试试:

set elm =ie.document.getElementById("test")  ' at least a decent assignment
val = elm.value
==>
... runtime error: Object doesn't support this property or method: 'elm.value'

像“html dom div text”这样的Google查询会指向“innerText” 及其功能:12

最后:

set elm =ie.document.getElementById("test")  ' at least a decent assignment
val = elm.innerText

成功!

cscript 23971918.vbs
value is= 24

答案 2 :(得分:0)

有人提到你应该将getElementsById更改为getElementById(没有&#39; s&#39;),但我也认为你应该在这一行中丢失.item(1): set val = ie.document.getElementsById(&#34; test&#34;)。item(1).value

如果我没记错,如果你的对象是一个集合,使用.item(#)是合适的,就像使用.getElementsByTagName返回的东西一样,但.getElementById应该只返回一个项目。

希望有所帮助!