有人可以建议支持cookie和自动执行javascript的.NET无头浏览器吗?
答案 0 :(得分:9)
Selenium+HtmlUnitDriver/GhostDriver正是您所寻找的。过度简化,Selenium是用于自动化目的的各种浏览器的库 - 测试,抓取,任务自动化。
您可以使用不同的WebDriver类来操作实际的浏览器。 HtmlUnitDriver是无头的。 GhostDriver是PhantomJS的WebDriver,所以你可以编写C#,而PhantomJS实际上会做繁重的工作。
Firefox的Selenium docs代码段,但GhostDriver(PhantomJS)或HtmlUnitDriver的代码几乎完全相同。
using OpenQA.Selenium;
using OpenQA.Selenium.Firefox;
using OpenQA.Selenium.Support.UI;
class GoogleSuggest
{
static void Main(string[] args)
{
// driver initialization varies across different drivers
// but they all support parameter-less constructors
IWebDriver driver = new FirefoxDriver();
driver.Navigate().GoToUrl("http://www.google.com/");
IWebElement query = driver.FindElement(By.Name("q"));
query.SendKeys("Cheese");
query.Submit();
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
wait.Until((d) => { return d.Title.ToLower().StartsWith("cheese"); });
System.Console.WriteLine("Page title is: " + driver.Title);
driver.Quit();
}
}
如果您在Windows机器上运行它,您可以使用实际的Firefox / Chrome驱动程序,因为它将打开一个实际的浏览器窗口,该窗口将按照C#中的编程操作。 HtmlUnitDriver是最轻量级和最快的。
我使用Mono在Linux上成功运行了Selenium for C#(FirefoxDriver)。我想HtmlUnitDriver也可以和其他人一样好用,所以如果你需要速度 - 我建议你选择Mono(你可以在Windows上使用Visual Studio进行开发,测试和编译,没问题)+ Selenium HtmlUnitDriver在没有桌面的Linux主机上运行。
答案 1 :(得分:4)
我不知道基于.NET的无头浏览器,但总是PhantomJS是C / C ++,它可以很好地协助用QUnit对JS进行单元测试。
此处还有另一个相关问题可能会对您有所帮助 - Headless browser for C# (.NET)?