我正在尝试提取特定的标签值 在我为实验而创建的一个页面上。我是Cefsharp的新手。我正试图通过实验来提高自己。我在EvaluateScriptAsync部分被困了大约两天。
我在尝试捕捉 在我准备的页面上的特定标签中的按钮。我通过按下一个按钮来运行下面的代码。我的页面有3个具有相同标签的按钮。但是,它只打印其中一个。
<input type="button" id ="button1" value="First Button">
<input type="button" id ="button2" value="Second Button">
<input type="button" id ="button3" value="Third Button">
这些就是我要找的纽扣
string script = @"(function() { " +
"var button = document.querySelectorAll('input[type = \"button\"]'); " +
"if(button != null) {for (var i = 0; i < button.length; i++) { return button[i].value;
}}else{alert('not found!');}" +
"})();";
chrome.EvaluateScriptAsync(script).ContinueWith(a =>{
var response = a.Result;
if (response.Success && response.Result != null)
{
string print = (string)response.Result;
MessageBox.Show(print.ToString());
}
}, TaskScheduler.FromCurrentSynchronizationContext());
我已经尝试了很多。我想我在javascript部分犯了一个错误。我已经阅读了大多数类似的主题。但我不能找到一个解决方案。
output : First Button
1条答案
按热度按时间rhfm7lfc1#
EvaluateScriptAsync函数只能返回1个值或一个字符串,因此我确保将JavaScript中的结果转换为JSON字符串对象。
然后,在C#中检索结果时,可以使用JSON将其转换回对象(在本例中为字符串列表),并对数据执行所需的任何操作。
看看你的JavaScript代码示例,你的代码的问题是在你的循环中有一个return语句,它只返回它遇到的第一个按钮值。这就是你的问题。
如果你想在C#中与结果列表交互,你需要将它从JSON字符串转换回来。只需转到nuget并将“Newtonsoft.Json”包安装到你的项目中。
然后你可以这样写: