我想创建一个脚本,它将打开IE并自动填写外部网站表单中的输入。我想要填充的输入放在框架内。所以getElementByID
不会在这里工作。
我已经建立了自己的测试网站来使用该脚本。稍后我将把它实现到另一个但我想从简单开始。这是脚本将打开的网站:
<!DOCTYPE html>
<html>
<frameset cols="25%,*,25%">
<frame name="menu" src="menu.html">
<frame name="form" src="form.html">
<frame name="application" src="application.html">
</frameset>
</html>
这是form.html
的一个示例(它不需要提交任何内容,但它只是一个测试):
<!DOCTYPE html>
<html>
<head>
<title>Login</title>
</head>
<body>
<div class="login">
<form action='' method='POST' id='nameform'>
Username: <input type='text' name='user' id='user' value=""><br>
Password: <input type='password' name='pswrd' id='pswrd' value=""><br>
<input name='submit' type='submit' value='submit' id='submit'><br>
</form>
</div>
</body>
</html>
最后但并非最不重要的是我的VBScript:
Call Main
Function Main
Set IE = WScript.CreateObject("InternetExplorer.Application", "IE_")
IE.Visible = True
IE.Navigate "http://example.com"
Wait IE
With IE.Document
.getElementByID("user").value = "CoolUsername123"
.getElementByID("pswrd").value = "BestPasswordEver321"
End With
End Function
Sub Wait(IE)
Do
WScript.Sleep 500
Loop While IE.ReadyState < 4 And IE.Busy
End Sub
此代码在其他网站上运行正常,我之前在trello.com上使用过它。但是这个网站没有使用框架,我认为这可能是问题所在。
我也尝试过使用此代码:
Call Main
Function Main
Set IE = WScript.CreateObject("InternetExplorer.Application", "IE_")
IE.Visible = True
IE.Navigate "http://example.com"
Wait IE
With IE.Document
set frame = IE.document.getElementsByName("form")(0)
frame.contentwindow.document.getElementByID("user").value = "CoolUsername123"
frame.contentwindow.document.getElementByID("pswrd").value = "BestPasswordEver321"
End With
End Function
Sub Wait(IE)
Do
WScript.Sleep 500
Loop While IE.ReadyState < 4 And IE.Busy
End Sub
我也尝试过:
IE.Document.Frames("form").Document.All("user").Value = "CoolUsername123"
我不再收到错误,但输入中也没有值
答案 0 :(得分:1)
首先从页面获取名为“form”的框架。由于它只有名称,我们可以使用getElementsByName方法获取返回集合的第一个元素:
set frame = IE.document.getElementsByName("form")(0)
现在使用contentWindow property访问表单字段。
frame.contentwindow.document.getElementByID("user").value = "CoolUsername123"
frame.contentwindow.document.getElementByID("pswrd").value = "BestPasswordEver321"