Selenium 2 (webdriver): снимок экрана возвращает черное изображение - PullRequest
7 голосов
/ 22 января 2012

Я использую Selenium 2 (Webdriver) на веб-сайте ASP.NET для создания службы, где пользователи могут вводить свои URL и получать скриншоты страницы, сделанные в разных браузерах.

Моя страницаХостет на Windows Server 2008 R2.

Снимки экрана с FirefoxDriver отлично работает.Но когда я использую InternetExplorerDriver, я просто получаю пустой черный файл.

Приложение работает от имени администратора - поэтому не должно быть проблем с разрешениями.

Мой код:

// Opening the Browser
var ieCapabilities = DesiredCapabilities.InternetExplorer();
ieCapabilities.SetCapability(InternetExplorerDriver.IntroduceInstabilityByIgnoringProtectedModeSettings, true);
var browserIe = new InternetExplorerDriver(ieCapabilities);
browserIe.Navigate().GoToUrl("http://www.google.com");
// Screenshot
var dir = Server.MapPath("/screenshots/");
browserIe.GetScreenshot().SaveAsFile(dir + "Filename.png", ImageFormat.Png);
browserIe.Close();

Есть идеи, почему мой файл черный?СПАСИБО!

Ответы [ 2 ]

6 голосов
/ 20 февраля 2012

Вероятно, в вашем коде нет ничего плохого.Хотя я использую Java, поэтому не могу сказать наверняка.

У меня была та же проблема с IE, в то время как FF и Chrome работали нормально.

Эта запись предполагает, что запуск Selenium Server через подключение к удаленному рабочему столу может привести к проблемам.

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

Я только что попытался оставитьподключение к удаленному рабочему столу открыто, и это решило проблему черного скриншота.Также вход в систему через VNC, похоже, работает, что наводит меня на мысль, что Windows блокирует экран после разрыва подключения к удаленному рабочему столу, оставляя его разблокированным при использовании VNC.

Эта запись предполагает отключениеснимки экрана при заблокированном экране - это функция безопасности Windows.

0 голосов
/ 05 октября 2012
    InternetExplorerDriver mydriver = new InternetExplorerDriver();
    mydriver.Navigate().GoToUrl("http://www.google.com/");
    Screenshot myScrennShot = ((ITakesScreenshot)iedriver).GetScreenshot();
    myScrennShot.SaveAsFile(@"C:\Path\123.png", ImageFormat.Png);
    //or
    byte[] data = myScrennShot.AsByteArray;

Это работает для меня, возможно, это работает и для вас :-) Если это не работает, я предлагаю вам разделить этот код на другой сервис (WindowsService), потому что в вашем случае эта проблема может быть связана с приложениемограничения пула.В любом случае, пожалуйста, дайте мне знать, как идут дела.

...