我在一家公司工作,他们有一个网站,可以访问我们位于远程位置的所有服务器。 我有一个VBScript打开网站,提供用户名和passowrd登录网站,并为我打开wesite。 它也点击我的一些链接,然后我需要更改下拉列表中的值,将显示100项(默认为10)。 我无法解决的问题是将值从10更改为100 我会告诉你我正在使用的代码
Set oIE = CreateObject("InternetExplorer.Application")
oIE.Visible = true
oIE.navigate "http://zzz.zz.zz:0000/zz/zz"
Do
WScript.Sleep 500
Loop While oIE.ReadyState < 4 And oIE.Busy
oIE.Document.All.Item("username").Value = "zzzz"
WScript.Sleep 250
oIE.Document.All.Item("password").Value = "zzzzzz"
WScript.Sleep 250
oIE.Document.All.Item("login").submit
WScript.Sleep 100
oIE.navigate "http://zzz.zz.zz:0000/zz/zz/ca12/index.jsp?console.tab=Home&task.clear=1"
WScript.Sleep 10000
oIE.navigate "http://zzz.zz.zz:0000/zz/zz/ca12/index.jsp?task.tag=MyPasswordAccountsJSFTask"
WScript.Sleep 1000
For Each opt In oIE.document.getElementById("comObjsNum").Options
If opt.Value = 100 Then
opt.Selected = True
Else
opt.Selected = False
End If
Next
但我无法更改下拉列表中的值。 最有可能&#34;我不知道怎么做!! &#34;
下拉列表有4个选项,即:10,25,50&amp; 100。
当我已经登录时,我在第9行也会收到错误 错误说:&#34;对象必需....&#34;
更新:使用此代码仍然出错:
Set oIE = CreateObject("InternetExplorer.Application")
oIE.Visible = true
oIE.navigate "http://zzz.zz.zz:0000/zz/zz"
Do
WScript.Sleep 500
Loop While oIE.ReadyState < 4 And oIE.Busy
oIE.Document.All.Item("username").Value = "zzzz"
WScript.Sleep 250
oIE.Document.All.Item("password").Value = "zzzzzz"
WScript.Sleep 250
oIE.Document.All.Item("login").submit
WScript.Sleep 100
oIE.navigate "http://zzz.zz.zz:0000/zz/zz/ca12/index.jsp? console.tab=Home&task.clear=1"
WScript.Sleep 10000
oIE.navigate "http://zzz.zz.zz:0000/zz/zz/ca12/index.jsp? task.tag=MyPasswordAccountsJSFTask"
WScript.Sleep 1000
oIE.document.getElementById("comObjsNum").selectedIndex = 3
答案 0 :(得分:2)
您应该能够设置控件的selectedIndex
属性:
oIE.document.getElementById("comObjsNum").selectedIndex = 3
编辑:
看到你的第二个问题。如果您已经登录,则密码字段可能不会在页面上存在。这可能是您收到错误的原因。所以你可能需要防范它:
On Error Resume Next
oIE.Document.All.Item("password").Value = "zzzzzz"
If Err Then
' Already logged in. Change course of action.
End If
On Error GoTo 0
答案 1 :(得分:2)
Set oIE = CreateObject("InternetExplorer.Application")
oIE.Visible = true
oIE.navigate "http://zzz.zz.zz:0000/zz/zz/"
Do
WScript.Sleep 500
Loop While oIE.ReadyState < 4 And oIE.Busy
WScript.Sleep 150
oIE.Document.All.Item("username").Value = "youdontneeedtoseeit"
WScript.Sleep 100
oIE.Document.All.Item("password").Value = "nobodycares"
WScript.Sleep 150
oIE.Document.All.Item("login").submit
Do While oIE.busy
WScript.Sleep 500
Loop
oIE.navigate "http://zzz.zz.zz:0000/zz/zz/ca12/index.jsp?console.tab=Home&task.clear=1"
Do While oIE.busy
WScript.Sleep 500
Loop
oIE.navigate "http://zzz.zz.zz:0000/zz/zz/ca12/index.jsp?task.tag=MyPasswordAccountsJSFTask"
Do While oIE.busy
WScript.Sleep 500
Loop
oIE.document.getElementById("comObjsNum").selectedIndex = 3
WScript.Sleep 100
oIE.document.getElementById("comObjsNum").FireEvent ("onchange")
我不得不在几乎每一个声明中都使用whie循环,因为该网站通常需要时间才能打开(尽管不可预测) 以及已登录的问题。我快到了,我很快就会找到它...... 我想感谢这个暗示我使用FireEvent的链接:This Link