单击 Windows 窗体中 CefSharp 浏览器中的按钮

WoJ*_*oJo 3 html javascript c# winforms cefsharp

我正在尝试单击网页 (kahoot.it) 上的一个按钮,并且我已经知道我可能需要使用 Javascript 来实现这一点,只要它与 1 行 JavaScript 保持一致,因为这很容易在WinForms。我没有太多关于按钮的信息,只有:

<button type="submit" value="Submit" class="enter-button__EnterButton-sc-1o9b9va-0 kxpxeu" data-functional-selector="join-game-pin"><span>Enter</span></button>
Run Code Online (Sandbox Code Playgroud)

你们能帮忙吗?页面上只有一个按钮,也许这会有所帮助。

Rez*_*aei 8

您需要编写一段 javascript 代码并在页面加载时运行它。

页面加载后运行脚本

要在页面加载后运行代码,您可以使用ExecuteScriptAsyncWhenPageLoadedmethod 或您可以处理FrameLoadEndLoadingStateChanged

DOM 操作 - 查找元素、设置值、点击按钮

对于 javascript 代码,您可以使用任何可用的 javascript 函数。例如使用getElemenetsByName,getElementsByTagName或查找元素getElementById

找到元素后,您可以设置它value或例如为一个按钮,您可以通过调用它的click()方法来单击它。

CefSharp 示例 - 浏览 URL,填写输入并单击按钮

以下代码将ChromiumWebBrowser控件添加到Form. 然后它浏览谷歌并用文本填充搜索框并点击搜索按钮:

//using CefSharp;
//using CefSharp.WinForms;
ChromiumWebBrowser browser;
protected override void OnLoad(EventArgs e)
{
    base.OnLoad(e);
    browser = new ChromiumWebBrowser("https://www.google.com/");
    browser.Dock = DockStyle.Fill;
    Controls.Add(browser);
    var script = @"
            document.getElementsByName('q')[0].value = 'CefSharp C# Example';
            document.getElementsByName('btnK')[0].click();
        ";
    browser.ExecuteScriptAsyncWhenPageLoaded(script);
}
Run Code Online (Sandbox Code Playgroud)

示例 2

在以下示例中,ExecuteScriptAsync您可以使用文本填充搜索框并以编程方式单击搜索按钮:

//using CefSharp;
//using CefSharp.WinForms;
ChromiumWebBrowser browser;
protected override void OnLoad(EventArgs e)
{
    base.OnLoad(e);
    browser = new ChromiumWebBrowser("https://www.google.com/");
    browser.Dock = DockStyle.Fill;
    Controls.Add(browser);
}
private void button1_Click(object sender, EventArgs e)
{
    var script = @"
        document.getElementsByName('q')[0].value = 'CefSharp C# Example';
        document.getElementsByName('btnK')[0].click();
    ";
    browser.ExecuteScriptAsync(script);
}
Run Code Online (Sandbox Code Playgroud)

注意:在您的情况下,对于kahoot.it,脚本应该是:

var script = @"
        document.getElementById('game-input').value = '123';
        document.getElementsByTagName('button')[0].click();
    ";
Run Code Online (Sandbox Code Playgroud)

  • 谢谢你!!现在我还有一个问题。该网站似乎无法识别文本框中的输入。当我运行代码时,它会给我一个错误,该错误是在文本框为空时给出的,但是当我手动键入它时,它会给我另一个错误(这没关系,也是我想要的结果)。 (2认同)