0

请参阅下面的此 html 代码以了解:

<input type="submit" name="send" class="button" value="Send" onclick="return ussd_send()">
<input type="submit" name="send" class="button" value="Disconnect" onclick="return ussd_exit()">

我想点击Send按钮,但我使用的代码没有任何效果:

webView21.ExecuteScriptAsync("document.getElementsByClassName('return ussd_send()').click();");
4

2 回答 2

1
webView21.ExecuteScriptAsync("document.getElementsByName('send')[0].click();");

这对我的问题有用,这给了我答案 poul bak。

Poul Bak 好人,如果您面对这个问题,您可以将其用于您的目的。

于 2021-08-09T00:50:51.250 回答
0

您可以使用Document.querySelectorAll()找到您的 Button 。
它使用标准的CSS 属性选择器作为输入:

string inputButtonValue = "Send";
// Or string inputButtonValue = "Disconnect";
var func = $"document.querySelectorAll('input[value=\"{inputButtonValue}\"]')[0].click();";
var result = await webView21.CoreWebView2.ExecuteScriptAsync(func);

兼容的替代方法是循环Document.getElementsByTagName()的结果,它返回 HTML 元素的集合:

string inputButtonValue = "Send";
var func = "var elms = document.getElementsByTagName('INPUT'); " +
    "for (var i = 0; i < elms.length; i++) {" +
        $"if (elms[i].value == '{inputButtonValue}') {{ " +
            "elms[i].click(); break;" +
        "};" +
    "};";

var result = await webView21.CoreWebView2.ExecuteScriptAsync(func);

您也可以使用WebView2.ExecuteScriptAsync()代替CoreWebView2.ExecuteScriptAsync(),但前者与 WinForms 绑定,后者则不是。万一在某些时候可移植性可能是一个问题。
您应该等待这些方法,如此处所示,(因为两者都是异步的),但如果您不需要评估result.

于 2021-08-02T20:37:30.327 回答