Селен, выполненный как служба Windows, чтобы сделать снимки экрана на ошибках

При использовании Eclipse он предлагает поддержку Javadoc. Например, нависая Ваша мышь над вызовом метода отобразит подсказку, показывающую Вам Javadoc для того метода. Документация для базовых классов Java поддерживается из поля. Однако, если Ваш проект пользуется какими-либо дополнительными библиотеками (файлы JAR), некоторая конфигурация требуется для включения их Javadoc в Eclipse.

  1. Переходят к разделу "Java Build Path" Ваших свойств проекта.
  2. Переходят к вкладке "Libraries" и нажимают "плюс" значок рядом с файлом JAR.
  3. Нажимают "Javadoc location", тогда кнопка "Edit...".

Это позволит Вам определить, где Javadoc для того JAR расположены. Это даже позволит Вам определить URL веб-сайта, таким образом, Вы не должны будете загружать Javadoc сами!

12
задан Grzegorz Oledzki 11 August 2009 в 12:42
поделиться

7 ответов

Похоже, есть совершенно другой ответ. Служба Windows (управляемая TanukiSoftware Java Service Wrapper ) была запущена с wrapper.ntservice.interactive , установленным на false . Помогло значение true . В конце концов, снимки экрана содержат реальное содержимое экрана.

За подробностями обращайтесь к wrapper.ntservice.interactive . Анализ кода оболочки приводит к [ SERVICE_INTERACTIVE_PROCESS ] ( http://msdn.microsoft.com/en-us/library/ms683502 (VS.85) .aspx) флаг устанавливается при запуске службы Windows.

5
ответ дан 2 December 2019 в 22:23
поделиться

В каком браузере вы запускаете эти тесты? Если это Firefox, я бы рекомендовал captureEntirePageScreenshot для захвата всего холста, а не только того, что находится в поле зрения (а не экрана), и captureEntirePageScreenshotToString, если вы работаете удаленно и хотите сохранить файлы локально.

Не уверен, что это будет помочь с вашей проблемой, но, поскольку он использует надстройку к Firefox, возможно, стоит попробовать.

3
ответ дан 2 December 2019 в 22:23
поделиться

Прочитав немного подробнее, это может быть связано с вашей службой Windows, требующей дополнительных разрешений безопасности. Возвращаясь к Windows NT 3.5 / 4, службы имели ограниченный доступ к рабочему столу приложения (требуется для снимков экрана), и я предполагаю, что их ограничения безопасности сохраняются и по сей день.

Эта ветка о службах на форумах java.net можно найти подсказки, необходимые для его работы.

2
ответ дан 2 December 2019 в 22:23
поделиться

Вот код для фотографирования с использованием Selenium и класса Java Robot:

public void takeAScreenShotOfTheApp() {
  Dimension screenDim = Toolkit.getDefaultToolkit().getScreenSize();
  Rectangle screenBounds = new Rectangle(0, 0, screenDim.width, screenDim.height);

  Robot robot = new Robot();
  BufferedImage image =  robot.createScreenCapture(screenBounds);

  File screenshotFile = new File("target" + File.separator
                               + "image" + System.currentTimeMillis() + ".png");
  ImageIO.write(image, "png", screenshotFile);
}

Он взят с этого сайта

0
ответ дан 2 December 2019 в 22:23
поделиться

Я столкнулся с проблемой, когда CaptureScreenshot генерирует черные изображения при работе под службой Windows.

Использование CaptureEntirePageScreenshot в соответствии с рекомендациями Дейва Ханта у меня стабильно работает.

1
ответ дан 2 December 2019 в 22:23
поделиться

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

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

0
ответ дан 2 December 2019 в 22:23
поделиться

Альтернативное решение для вашего подхода RunListener:

Включите свой тест в блок try-catch и сделайте снимок экрана в блоке catch, что я всегда делаю.

Пример кода Java:

public void testEnterFormFields()
  try {
    enterFormFields();
  } catch(SeleniumException e) {
    //do screenshot, logging, dumping, stacktracing or whatever here
  }
}

Вы может также перехватить Throwable или Exception, если ваши правила кодирования это позволяют, но имеет смысл перехватить конкретное Exception одно за другим. Такой подход создает немного больше беспорядка в вашем коде, но он очень поможет вам в случае анализа сбоев. Вы можете адаптировать обработку исключений к типу ошибки. Возможно, вы захотите получить другую информацию в случае AssertionError, чем в случае SeleniumException.

-1
ответ дан 2 December 2019 в 22:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: