我看过很多关于如何使用vb登录网站的例子。但不知何故,它一直说密码不正确。
让我解释一下: 我正在尝试使用vb登录此网站。我已设法使用
填写用户名和密码wb1.Document.GetElementById("Username").SetAttribute("Value", "myusername")
wb1.Document.GetElementById("Password").SetAttribute("Value", "mypassword")
我可以看到它们被填写,但点击登录按钮后,密码输入不正确。当我尝试手动填写密码(按程序用户名)并单击按钮它确实有效。 两个实例之间的区别?当我手动操作时,我输入的字母变为圆点。但是,当我通过我的程序这样做时,字母不会改变,但仍然是字母。我认为这是问题的一部分,但我不完全确定。
我也试图从元素密码中更改其他项目,例如OuterHTML。我手动输入密码时可以看到哪些项目已经调整。然后我使用了这些值。这没用。但话说回来,很难看出究竟发生了什么变化,所以也许我错过了一些东西。
我在做的时候注意到的一件事是当我手动输入密码时,值已更改为“”。我应该将密码放在不同的属性中吗?我猜密码应该发送到服务器编码?
这是网站上密码字段的代码
<div class="jNiceInputWrapper jNiceSafari FieldPosition col2">
<div class="jNiceInputInner">
<input type="password" name="Password" id="Password" class="jNiceInput" placeholder="Wachtwoord" onkeypress="return SubmitOnEnter(this,event)" />
</div>
</div>
我真的希望有人可以帮我解决这个问题。我一整天都在努力,只是想不出来。
编辑: 感谢CoDeXeR先生,我终于明白了! 解决问题的代码:
wb1.Document.All("Username").SetAttribute("value", "myusername")
wb1.Document.All("Password").SetAttribute("value", "mypassword")
Dim elements As HtmlElementCollection = (wb1.Document.All.GetElementsByName("Password"))
For Each element As HtmlElement In elements
element.InnerText = "mypassword"
Next
删除setattribute值或innertext会导致失败。
答案 0 :(得分:1)
试试这个,不要使用GetElementsByID,而是使用Document.All。你想将元素的name属性值传递给all,你可能只是缺少其中的一些......
wB1.Document.All("Username").SetAttribute("value", Username)
wB1.Document.All("Password").SetAttribute("value", Password)
让我知道这对您有何影响
修改
看了这个,我们不能使用我们尝试的方式,因为它是一个蒙面输入。相反,我们可以遍历文档并设置该元素的内部文本......
' Loop through elements until the element is found
Dim elements As HtmlElementCollection = wB1.Document.All.GetElementsByName("Password")
For Each element As HtmlElement In elements
element.InnerText = "your password"
Next