我正在尝试单击网页 (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
方法或者你可以处理 FrameLoadEnd
或 LoadingStateChanged
.
DOM操作——查找元素、设置值、点击按钮
对于 javascript 代码,您可以使用任何可用的 javascript 函数。例如,使用 getElemenetsByName
、getElementsByTagName
或 getElementById
查找元素。
找到该元素后,您可以设置它的值
,或者例如,对于一个按钮,您可以通过调用它的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/