Захват скриншота всей страницы с помощью Selenium в IE9

#c# #selenium #selenium-webdriver

#c# #селен #selenium-webdriver

Вопрос:

Я пытаюсь заставить CaptureEntirePageScreenshot IE9 работать. Я прочитал много документов и вики, чтобы заставить это работать, но пока у меня ничего не получалось.

Поэтому я подумал, что буду использовать snapsie напрямую. Итак, я загрузил dll и зарегистрировал ее, используя эти инструкции. Затем я использовал его напрямую:

 selenium.GetEval(js_code   "this.browserbot.getUserWindow().Snapsie.saveSnapshot('C:\pic\test.png');");
  

Однако я получаю сообщение об ошибке:

сервер автоматизации не может создать объект

Есть идеи?

Я был бы признателен за любую общую помощь в получении snapsie.js на работу. Я использую последнюю версию selenium server (2.9.0) на компьютере с Windows 7 с IE9 и FF4. Я использую C #.

Ответ №1:

Я не уверен, почему вы используете Snapsie, но самый простой способ получить скриншот из Internetexplorer — использовать сам InternetExplorerDriver:

 IWebDriver driver;
driver = new InternetExplorerDriver();
// change this line if you want to use an different Browser / WebDriver Implementation
//driver = new FirefoxDriver();
driver.Navigate().GoToUrl("http://www.google.com/");
IWebElement query = driver.FindElement(By.Name("q"));
query.SendKeys("Cheese");
// TODO: wait
((ITakesScreenshot)driver).GetScreenshot().SaveAsFile(@"screenIE.png", ImageFormat.Png);
  

Комментарии:

1. не похоже, что он будет работать с selenium. Я не могу просто открыть другой браузер на другую страницу.

2. Я уверен, что это работает с selenium (Selenium 2 / WebDriver), я только что попробовал. Поместите мой код в простое консольное приложение на C #, обратитесь к Selenium. Чистые DLL и запустите его.

3. Я не ориентируюсь только на IE. Я использую Selenium для открытия нескольких браузеров. Поэтому я не могу использовать вышеприведенное с Selenium, поскольку Selenium не будет управлять тестовым примером, которым он будет InternetExplorerDriver .

4. хорошо, тогда немного измените код. Используйте интерфейс и используйте любую реализацию Selenum (браузера), которую вы хотите. —> я изменил код ответа на более общее использование. (Кроме того, мне интересно, почему вы назвали свой вопрос «Захватить скриншот… в IE9» если вы хотите использовать любой браузер !?)

5. Отлично, спасибо! Будет сложно перейти на веб-драйвер, но он может делать то, что мне нужно.