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

标签 javascript c# html 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>

请问你们能帮帮我吗?页面上只有一个按钮,也许这有帮助。

最佳答案

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

页面加载后运行脚本

要在页面加载后运行代码,您可以使用 ExecuteScriptAsyncWhenPageLoaded方法或者你可以处理 FrameLoadEndLoadingStateChanged .

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

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

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

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

以下代码将 ChromiumWebBrowser 控件添加到 Form 中。然后它浏览 google并用文本填充搜索框并单击搜索按钮:

//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);
}

示例 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);
}

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

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

关于javascript - 在 Windows 窗体中单击 CefSharp 浏览器中的按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59230233/

相关文章:

javascript - IE11 中的 onclick 功能不起作用

html - Windows 7 中的 VS 2012 HTML5 JS 项目

Javascript setInterval 一段时间后变得疯狂

javascript - 如何让 JavaScript 触发声音文件?

c# - 从 QFile 的内容填充 QListView 的最快方法是什么?

c# - native 应用程序和 Azure AD - Hello World

c# - 下载当前 WSJ.com 最优惠利率

javascript - 返回元素的渲染而不换行

javascript - 如何在 Javascript 中替换字符串中的撇号?

javascript - Uncaught TypeError : Cannot add property 0, object is not extensible at Array.push