我想在从 C# 字符串生成的 HTML 上运行 javascript。 (无需打开浏览器 - 只需 C# 代码)
类似于:
string myHTML = '<div id="divTest">This is test<br/><br/></div>';
Javascript 应该是:
function test
{
return document.getElementById('divTest').offsetHeight;
}
我已经尝试过检查一些 headless 浏览器,如 PhantomJS 和 Optimus - 但它们没有呈现字符串的选项(只能通过 http://google.com 这样的网址打开网页/
.有没有办法通过C#来实现?
最佳答案
以下对我有用:
string html = "<html><head></head><body><div id=\"divTest\">This is test<br/><br/></div></body></html>";
string script1 = "return document.getElementById('divTest').innerText";
string script2 = "return document.getElementById('divTest').offsetHeight";
var options = new PhantomJSOptions();
options.AddAdditionalCapability("javascriptEnabled", true);
var driver = new PhantomJSDriver(options);
driver.Url = "file://dummy.html";
driver.Navigate();
driver.ExecutePhantomJS("document.write('" + html + "');");
var test1 = driver.ExecutePhantomJS(script1);
//Returns: This is a test
var test2 = driver.ExecutePhantomJS(script2);
//Returns: 40
您需要安装 Selenium.WebDriver NuGet 并从 http://phantomjs.org/download.html 下载 PhantomJS exe。它需要与您的 exe 位于同一文件夹中或位于 PATH 中。
关于javascript - 在从 C# 字符串生成的 HTML 上运行 javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45964030/