在 PhantomJS 中使用 C# 启用 JavaScript
本文关键字:启用 JavaScript PhantomJS | 更新日期: 2023-09-27 18:31:04
我在C#应用程序中使用了PhantomJS,即使属性PhantomJSDriver.Capabilities.IsJavaScriptEnabled为真,它也没有执行JavaScript。下面的简单页面仍然执行 noscript 标签的内容。如何让PhantomJS执行JavaScript?
我已通过NuGet将Selenium和PhantomJS添加到我的VS2012解决方案中:
PM> Install-Package Selenium.WebDriver
PM> Install-Package PhantomJS
我创建了一个简单的 HTML 页面来演示未启用 JavaScript:
<html>
<body>
<a href="javascript:GoToAnotherPage()">Go to another page</a>
<noscript>
No JavaScript!
</noscript>
</body>
</html>
我用过PhantomJSDriver。src 显示"No Javascript!"
public class Program
{
public static void Main(string[] args)
{
var phantomDriver = new PhantomJSDriver();
phantomDriver.Url = @"C:'page.html";
var src = phantomDriver.PageSource;
}
}
JavaScript 在使用 PhantomJS 时默认启用。事实上,我不知道默认情况下任何WebDriver在没有JavaScript的情况下启动他们的浏览器。
要确保启用 JavaScript,您可以检查
var phantomDriver = new PhantomJSDriver();
var enabled = phantomDriver.Capabilities.IsJavaScriptEnabled;
您还可以通过截取屏幕截图并检查noscript块是否实际上未显示来实验性地检查JavaScript是否正在运行。因此,当屏幕截图(phantomDriver.GetScreenshot();
)在您的情况下为空白时,它就可以工作。
顺便说一下,为 PhantomJSDriver 禁用 JavaScript 是一个坏主意,因为 WebDriver 协议的许多操作都是用 JavaScript 实现的。禁用JS将有效地禁用驱动程序。
PageSource 不应该执行 JavaScript,它获取浏览器上次加载的页面的源代码,因此它包含 HTML 文件中的所有内容。
查看页面使用的实际状态
phantomDriver.GetScreenshot();