2014-11-17 4 views
0

Из-за отсутствия надлежащей документации я не уверен, что HtmlAgilityPack поддерживает захват экрана в C# после загрузки содержимого html.Захват экрана в C# с использованием HtmlAgilityPack

Так есть способ, которым я могу более или менее захватить скриншот, используя (или вместе с) HtmlAgilityPack, чтобы у меня была визуальная подсказка о том, что происходит каждый раз, когда я делаю манипуляции с страницами?

Вот мой рабочий код до сих пор:

using HtmlAgilityPack; 
using System; 

namespace ConsoleApplication4 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      string urlDemo = "https://htmlagilitypack.codeplex.com/"; 
      HtmlWeb getHtmlWeb = new HtmlWeb(); 
      var doc = getHtmlWeb.Load(urlDemo); 
      var sentence = doc.DocumentNode.SelectNodes("//p"); 
      int counter = 1;   
      try 
      { 
       foreach (var p in sentence) 
       { 
        Console.WriteLine(counter + ". " + p.InnerText); 
        counter++; 
       } 
      } 
      catch (Exception e) 
      { 
       Console.WriteLine(e); 
      } 
      Console.ReadLine();    
     } 
    } 
} 

В настоящее время, скребет и выход всех p страницы в консоли, но в то же время я хочу, чтобы получить захват экрана Царапины содержимого но я не знаю, как и с чего начать.

Любая помощь очень ценится. TIA

+2

Пакет «Умения HTML» этого не делает. Вам нужно будет найти другую библиотеку, например [Awesomium] (http://www.awesomium.com/). –

+1

Если вы хотите захватить свой экран, ознакомьтесь с этим: http://stackoverflow.com/questions/3072349/capture-screenshot-including-semitransparent-windows-in-net/3072580#3072580 HTML Agility pack не имеет никакого отношения к этому – YuriG

ответ

3

Вы не можете сделать это с помощью HTML Agility Pack. Используйте другой инструмент, например, Selenium WebDriver. Вот как это сделать: Take a screenshot with Selenium WebDriver

3

Вместо этого вы можете использовать Selenium WebDriver?

Вам необходимо добавить следующие пакеты NuGet к вашему проекту первый:

Загрузка страницы и сделав скриншот затем так же просто, как .. .

using System; 
using System.Drawing.Imaging; 
using System.IO; 
using OpenQA.Selenium; 
using OpenQA.Selenium.Firefox; 
using OpenQA.Selenium.Support.UI; 

namespace SeleniumTest 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      // Create a web driver that used Firefox 
      var driver = new FirefoxDriver(
       new FirefoxBinary(), new FirefoxProfile(), TimeSpan.FromSeconds(120)); 

      // Load your page 
      driver.Navigate().GoToUrl("http://google.com"); 

      // Wait until the page has actually loaded 
      var wait = new WebDriverWait(driver, new TimeSpan(0, 0, 10)); 
      wait.Until(d => d.Title.Contains("Google")); 

      // Take a screenshot, and saves it to a file (you must have full access rights to the save location). 
      var myDesktop = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); 
      ((ITakesScreenshot)driver).GetScreenshot().SaveAsFile(Path.Combine(myDesktop, "google-screenshot.png"), ImageFormat.Png); 

      driver.Close(); 
     } 
    } 
} 
+1

ваш код работает сейчас. но есть ли способ браузера Firefox не всплывать, а вместо этого просто делать снимок экрана в фоновом режиме, в то время как HtmlAgilityPack делает свое дело? – anagnam

+0

@reymangana - nope. Selenium WebDriver управляет сеансом Firefox. Он способен очищать информацию с веб-страницы, поэтому я подозреваю, что вы можете использовать ее для всего, что вы сейчас делаете, используя Agility Pack. –

Смежные вопросы