6

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

Моя страница - это хост на 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(); 

Любые идеи, почему мой файл является черный? СПАСИБО!

ответ

5

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

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

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

Некоторые другие сообщения предполагают, что экранная заставка может иметь какое-то отношение к ней.

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

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

0
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), потому что в вас случае этот вопрос может быть подключен с ограничения пула приложений. В любом случае, пожалуйста, дайте мне знать, как это происходит.

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