2013-03-06 19 views
8

Có thể ai đề xuất trình duyệt không đầu cho .NET hỗ trợ cookie và thực thi javascript tự động không?C# trình duyệt không đầu có hỗ trợ javascript cho trình thu thập thông tin

+0

Bạn có nghĩa là [Kiểm soát trình duyệt Web] (http://msdn.microsoft.com/en-us/library/2te2y1x6.aspx)? –

+0

có thể trùng lặp của [WebClient chạy javascript] (http://stackoverflow.com/questions/5372277/webclient-runs-javascript) –

+0

Bạn định sử dụng nó như thế nào? – jrummell

Trả lời

4

Tôi không biết về trình duyệt không có trụ sở .NET nhưng luôn có PhantomJS là C/C++ và hoạt động khá tốt để hỗ trợ kiểm tra đơn vị JS bằng QUnit.

Ngoài ra còn có một câu hỏi liên quan ở đây mà có thể giúp bạn - Headless browser for C# (.NET)?

9

Selenium+HtmlUnitDriver/GhostDriver là chính xác những gì bạn đang tìm kiếm. Ngoài ra, Selenium là thư viện để sử dụng nhiều trình duyệt cho các mục đích tự động hóa - kiểm tra, cạo, tự động hóa tác vụ.

Có các lớp WebDriver khác nhau mà bạn có thể vận hành một trình duyệt thực tế. HtmlUnitDriver là một cái không đầu. GhostDriver là một WebDriver cho PhantomJS, vì vậy bạn có thể viết C# trong khi thực sự PhantomJS sẽ thực hiện việc nâng hạng nặng.

Đoạn mã từ Selenium docs cho Firefox, nhưng mã với GhostDriver (PhantomJS) hoặc HtmlUnitDriver gần như giống hệt nhau.

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

Nếu bạn chạy trên máy Windows, bạn có thể sử dụng trình duyệt Firefox/Chrome thực tế vì nó sẽ mở một cửa sổ trình duyệt thực sẽ hoạt động như được lập trình trong C#. HtmlUnitDriver là nhẹ nhất và nhanh chóng.

Tôi đã chạy thành công Selenium cho C# (FirefoxDriver) trên Linux bằng cách sử dụng Mono. Tôi giả sử HtmlUnitDriver cũng sẽ hoạt động tốt như những người khác, vì vậy nếu bạn yêu cầu tốc độ - tôi đề nghị bạn đi Mono (bạn có thể phát triển, thử nghiệm và biên dịch với Visual Studio trên Windows, không có vấn đề gì) + Selenium HtmlUnitDriver chạy trên máy chủ Linux mà không cần máy tính để bàn .