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)
你们能帮忙吗?页面上只有一个按钮,也许这会有所帮助。
您需要编写一段 javascript 代码并在页面加载时运行它。
页面加载后运行脚本
要在页面加载后运行代码,您可以使用ExecuteScriptAsyncWhenPageLoaded
method 或您可以处理FrameLoadEnd
或LoadingStateChanged
。
DOM 操作 - 查找元素、设置值、点击按钮
对于 javascript 代码,您可以使用任何可用的 javascript 函数。例如使用getElemenetsByName
,getElementsByTagName
或查找元素getElementById
。
找到元素后,您可以设置它value
或例如为一个按钮,您可以通过调用它的click()
方法来单击它。
以下代码将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)