如何解决将文本从javascript变量保存到.txt文件
我正在尝试这段代码,但无法正常工作,它说“名称” text”在当前上下文中不存在”
CurBrowser.GetMainFrame().ExecuteJavaScriptAsync("for(var i = 0; i < elems1.length; i++){ var textt = elems1[i].innerText}");
string docPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
using (StreamWriter outputFile = new StreamWriter(Path.Combine(docPath,"WriteLines.txt"),true))
{
outputFile.WriteLine(textt);
}
如何使变量“ textt”可访问?
这是完整的代码:
private void button3_Click(object sender,EventArgs e)
{
CurBrowser.GetMainFrame().ExecuteJavaScriptAsync("var elems1 = document.getElementsByClassName('question-text')");
CurBrowser.GetMainFrame().ExecuteJavaScriptAsync("for(var i = 0; i < elems1.length; i++){var textt = elems1[i].innerText}");
string docPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
using (StreamWriter outputFile = new StreamWriter(Path.Combine(docPath,true))
{
outputFile.WriteLine(textt);
}
}
解决方法
您可能正在寻找可以在ExecuteJavaScriptAsync()
之后链接的ContinueWith()
。
在此示例中,您需要将JavaScript代码用作返回任何内容(例如textt)的函数。所以我创建了这样的东西:
var myScript = @"(function () {
var textt = "";
var elems1 = document.getElementsByClassName('question-text');
for(var i = 0; i < elems1.length; i++){
textt += elems1[i].innerText
}
return textt;
})();";
比我异步评估它并捕获从该函数返回的结果:
var result = await CurBrowser
.GetMainFrame()
.EvaluateScriptAsync(myScript)
.ContinueWith(t => {
var result = t.Result; // your textt
string docPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
using (StreamWriter outputFile = new StreamWriter(Path.Combine(docPath,"WriteLines.txt"),true)) {
outputFile.WriteLine(result);
}
});
这只是它可能如何工作的建议。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。