2013-03-06 11 views
8

Czy ktokolwiek mógłby zaproponować przeglądarkę bez nagłówka dla .NET, która obsługuje pliki cookie i automatyczne wykonywanie javascript?C# przeglądarka bezgłowicowa z obsługą javascript dla robota

+0

Masz na myśli [formant WebBrowser] (http://msdn.microsoft.com/en-us/library/2te2y1x6.aspx)? –

+0

możliwy duplikat [WebClient uruchamia javascript] (http://stackoverflow.com/questions/5372277/webclient-runs-javascript) –

+0

Jak planujesz z niego korzystać? – jrummell

Odpowiedz

4

Nie mam informacji o bezgłowej przeglądarce opartej na .NET, ale zawsze jest PhantomJS, która jest C/C++ i działa całkiem dobrze, pomagając w testowaniu jednostkowym JS przy pomocy QUnit.

Istnieje również inny istotny tu pytanie, które mogłyby pomóc - Headless browser for C# (.NET)?

9

Selenium+HtmlUnitDriver/GhostDriver jest dokładnie to, czego szukasz. Podsumowując, Selenium to biblioteka do korzystania z różnych przeglądarek do celów automatyzacji - testowania, skrobania, automatyzacji zadań.

Istnieją różne klasy WebDriver, za pomocą których można obsługiwać rzeczywistą przeglądarkę. HtmlUnitDriver jest bezgłowy. GhostDriver to WebDriver dla PhantomJS, więc możesz napisać C#, podczas gdy PhantomJS rzeczywiście wykona ciężki lifting.

Fragment kodu z Selenium docs dla przeglądarki Firefox, ale kod z GhostDriver (PhantomJS) lub HtmlUnitDriver jest prawie identyczny.

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(); 
    } 
} 

Jeśli uruchomić to na komputerze z systemem Windows można użyć rzeczywisty sterownik Firefox/Chrome ponieważ otworzy rzeczywistą okno przeglądarki, która będzie działać jak zaprogramowany w języku C#. HtmlUnitDriver jest najbardziej lekki i szybki.

Udało mi się uruchomić Selenium dla C# (FirefoxDriver) na Linuksie przy użyciu Mono. Przypuszczam, że HtmlUnitDriver będzie działał równie dobrze, jak inne, więc jeśli potrzebujesz szybkości - sugeruję, abyś wybrał Mono (możesz tworzyć, testować i kompilować z Visual Studio na Windowsie, bez problemu) + Selenium HtmlUnitDriver działający na hoście Linux bez komputera .

Powiązane problemy