Visual Basic 19 - WebView2 - 自动单击网页按钮
Posted
技术标签:
【中文标题】Visual Basic 19 - WebView2 - 自动单击网页按钮【英文标题】:Visual Basic 19 - WebView2 - Auto click a webpage button 【发布时间】:2021-12-30 01:00:06 【问题描述】:我有一个旧的 VB 网络浏览器,可以自动登录到我的社交帐户。 它会通过自动输入我的凭据并单击“登录”来完成此操作。 我享受“我自己的”浏览器的隐私,我不需要记住我的密码。 不过最近我的硬盘坏了,也没有备份……
我很想用 WebView2 (Chromium-Edge) 包重新创建它,因为默认的 WebBrowser 控件现在有问题。 (我知道密码的安全性和存储有更好的选择,这只是一个怀旧的项目。) 但是,我在转换代码时遇到了问题。
我记得我的代码来自:
Dim WebElements As htmlElementCollection = WebBrowser1.Document.All
For each PageElement As HtmlElement In WebElements
If PageElement.GetAttribute("value") = "Log In" Then
PageElement.InvokeMember("click")
End if
Next
如果有人能帮助我弄清楚如何在 WebView2 中自动填充文本字段,那就太好了。
【问题讨论】:
【参考方案1】:您可以使用WebView2.ExecuteScriptAsync(String)
方法调用javascript。 ExecuteScriptAsync
是异步的,必须在前面加上await
。
类似这样的:
await webView21.ExecuteScriptAsync("document.querySelector('[value=\"Log In\"]').click();");
其中vebWiew21
是WebView2
控件的名称。
这应该让你登录。
要设置文本框的值,你需要知道输入字段的id
属性,你想改变,然后你使用ExecuteScriptAsync
来改变值,像这样:
await webView21.ExecuteScriptAsync("document.getElementById('the id').value = 'your name'";);
和密码类似。当然这些值应该在你调用click()
之前设置。
【讨论】:
感谢您的回复。但是,我不确定我是否正确使用了第一行代码。我导入了它,如果我没有收到异步错误,应用程序将运行,但没有按下“登录”按钮,应用程序冻结几秒钟。有什么想法吗? 我建议您按“F12”调出开发者工具。检查元素是否确实具有您期望的值。以上是关于Visual Basic 19 - WebView2 - 自动单击网页按钮的主要内容,如果未能解决你的问题,请参考以下文章