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) 方法调用javascriptExecuteScriptAsync是异步的,必须在前面加上await

类似这样的:

await webView21.ExecuteScriptAsync("document.querySelector('[value=\"Log In\"]').click();");

其中vebWiew21WebView2 控件的名称。

这应该让你登录。

要设置文本框的值,你需要知道输入字段的id属性,你想改变,然后你使用ExecuteScriptAsync来改变值,像这样:

await webView21.ExecuteScriptAsync("document.getElementById('the id').value = 'your name'";);

和密码类似。当然这些值应该在你调用click()之前设置。

【讨论】:

感谢您的回复。但是,我不确定我是否正确使用了第一行代码。我导入了它,如果我没有收到异步错误,应用程序将运行,但没有按下“登录”按钮,应用程序冻结几秒钟。有什么想法吗? 我建议您按“F12”调出开发者工具。检查元素是否确实具有您期望的值。

以上是关于Visual Basic 19 - WebView2 - 自动单击网页按钮的主要内容,如果未能解决你的问题,请参考以下文章

Visual Basic - 从具有整数的数组中获取值

如何在 Access 2007 中使用 Visual Basic 代码更新单元格

text Visual Basic代码Emmet

text Visual Basic代码片段

text Visual Basic代码命令

text Visual Basic代码Vue设置