C# 如何模拟单击返回结果
我正在C#中玩C# 如何模拟单击返回结果,c#,.net,cefsharp,C#,.net,Cefsharp,我正在C#中玩CefBrowser,我想知道如何使用类ClickMe模拟单击每个HTML元素,并将InnerHTML返回到C#WantedInnerHtml 在适当的页面中,通过AJAX调用加载WantedInnerHtml的内容 用C#编写代码 //页面完全加载后按下按钮 私有无效toolStrip1\u ItemClicked(对象发送者、ToolStripItemClickedEventArgs e) { 字符串脚本=@“ var el=document.getElementsByClas
CefBrowser
,我想知道如何使用类ClickMe
模拟单击每个HTML元素,并将InnerHTML返回到C#WantedInnerHtml
在适当的页面中,通过AJAX调用加载WantedInnerHtml的内容
用C#编写代码
//页面完全加载后按下按钮
私有无效toolStrip1\u ItemClicked(对象发送者、ToolStripItemClickedEventArgs e)
{
字符串脚本=@“
var el=document.getElementsByClassName('ClickMe');
对于(var i=0;i使用异步事件处理程序请参见示例。不要使用ContinueWith同时修改您的JavaScript,它实际上不会返回任何内容。建议ContinueWith?请参见editIt。这只是一个易于复制和粘贴的示例。根据您提供的示例,我建议使用不同的方法。就目前情况而言,您的FindImages函数将始终返回空字符串。是的,您在循环中只能返回一次,这是预期的JavaScript行为,不特定于CefSharp。我的意思是,您似乎只能返回一项。而不是在每次返回的循环中迭代。我不清楚异步事件处理程序如何创建数组并添加结果如果这使事情更简单,请使用。等待调用EvaluateScript Async,而不是ContinueWith。
// press button once page is fully loaded
private void toolStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
{
string script = @"
var el = document.getElementsByClassName('ClickMe');
for (var i=0;i<el.length; i++) {
alert(document.getElementsByClassName('WantedInnerHtml')[0].innerHTML);
return ocument.getElementsByClassName('WantedInnerHtml')[0].innerHTML;
el[i].click();
}
}";
string HtmlResults = FindImages(script);
}
private string FindImages(string script)
{
chromeBrowser.EvaluateScriptAsync(script).ContinueWith(x =>
{
var response = x.Result;
if (response.Success && response.Result != null)
{
dynamic result = response.Result;
return result;
}
else
{
return string.Empty;
}
});
return string.Empty;
}
<h1>Hello world!</h1>
<p><div class="ClickMe">Click ME
</div><div class="ClickMe">Click ME
</div></p>
<div class="WantedInnerHtml"><p>
I want this
</p>
</div>