Перейти к содержимому

Фотография

Capture screenshot with selenium remote web driver


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 4

#1 defonus

defonus

    Новый участник

  • Members
  • Pip
  • 32 сообщений

Отправлено 29 августа 2011 - 10:49

Возникла проблема со снятием скриншотов при использовании RemoteWebDriver. Дело в том, что RemoteWebDriver не имплементит интерфейс TakesScreenshot. Нагуглил вот такое решение http://blog.infostre...mote-web-driver , но что то у меня не работает, либо я что то не то делаю :(

Я джаднул TakesScreenshot класс и увидел следующее

package org.openqa.selenium;


// Referenced classes of package org.openqa.selenium:
//            WebDriverException, OutputType

public interface TakesScreenshot
{

    public abstract Object getScreenshotAs(OutputType outputtype)
        throws WebDriverException;
}

getScreenshotAs - вообще абстрактный метод и никакое @Override как в примере не надо, в классе RemoteWebDriver - вообще нету такого метода. Подскажите, все же как сделать скриншот на ремоут машине.
Пробовал передавать в getScreenshotAs и OutputType.BASE64 и OutputType.FILE - все время "Exception in thread "main" java.lang.NullPointerException
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:387)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:411)" на строке String base64Str = execute(DriverCommand.SCREENSHOT).getValue().toString();
  • 0

#2 Vitalik_V

Vitalik_V

    Активный участник

  • Members
  • PipPip
  • 149 сообщений
  • ФИО:Виталий
  • Город:Харьков

Отправлено 29 августа 2011 - 11:00

public void make_screenshot(String filename){

        File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
//далее сохраняем его куда угодно
       try {
		FileUtils.copyFile(scrFile, new File("test-output\\" +filename +".png").getAbsoluteFile());
	} catch (IOException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
}

У меня работает вот такой метод
  • 0

#3 defonus

defonus

    Новый участник

  • Members
  • Pip
  • 32 сообщений

Отправлено 29 августа 2011 - 11:24

У меня работает вот такой метод


Это под RemoteWebDriver работает ?
  • 0

#4 barancev

barancev

    Администратор

  • Admin
  • PipPipPipPipPipPip
  • 6 872 сообщений
  • ФИО:Алексей Баранцев
  • Город:Россия, Москва


Отправлено 29 августа 2011 - 12:36

Сначала надо сделать вот так:
driver = new Augmenter().augment(driver);
Этот Augmenter автоматически анализирует, какими capabilities обладает драйвер, и добавляет все нужные интерфейсы.
А после этого уже можно кастить к TakesScreenshot и делать скриншот.
Впрочем, это не объясняет, почему возникает NPE. Может быть браузер на удаленной машине сам не может снять скриншот?
  • 0
Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium

#5 defonus

defonus

    Новый участник

  • Members
  • Pip
  • 32 сообщений

Отправлено 30 августа 2011 - 10:21

Спасибо, это то что надо!!!
  • 0


Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных