среда, 28 августа 2013 г.

Когда ищешь, смотри по сторонам...

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

      Почему так происходит? Может быть zabbix не воспринимает перевод на новую строку? Может быть нужно использовать в шаблоне сообщения какой-то особый символ для переноса строки? Или это какой-то баг zabbix?..

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

      А через некоторое время я обнаружила, в чем была причина. Я просто не там ее искала! Видимо из-за того, что с zabbix я работала впервые, мне казалось, что все ошибки будут только из-за неправильной настройки zabbix. А причина была в почтовом клиенте Outlook! Нужно было всего лишь запретить удаление дополнительных переносов строк в сообщениях, и теперь сообщения от zabbix приходят именно в том виде, как это указано в шаблоне.

      Итак, в Outlook идем на вкладку Файл, переходим к пункту Параметры, далее в разделе Почта убираем флаг для «Удалять дополнительные переносы строк в текстовых сообщениях», и перестаем ругать Zabbix – он тут не виноват. :)

      Еще раз убедилась, что на любую проблему надо смотреть шире. Ведь все гораздо проще, чем мы думаем ;)

вторник, 27 августа 2013 г.

Оформление таблицы со списком в Excel

      Очень часто я создаю для себя различные таблицы с параметрами, требованиями или чек-листы. Все это удобно делать в виде таблиц в Excel. При этом для удобства я использую следующие «очевидности»:
  1. Использую сворачиваемые списки для группировки значений (Данные - > Группировать). Если свернуть все группы, то по заголовкам групп первого уровня можно быстрее найти нужную группу.
  2. Закрепляю верхнюю строку с заголовком (Вид - > Закрепить области). Это очень упрощает просмотр длинных таблиц, всегда понятно , как называется столбец, даже если он находится в самом конце длинной таблицы.
  3. Использую цветовое выделение различных групп.
В результате мои таблицы имеют такой вид:

В свернутом виде


В развернутом виде

четверг, 15 августа 2013 г.

Сворачивание списка в Excel

      Очень часто при создании таблиц в Excel хотелось бы использовать сворачиваемые списки. Оказывается, это очень просто!

      Итак, как же это сделать?
      1. Выделяем строки раздела, которые нужно сгруппировать, кроме заголовка.
      2. Выбрать Данные -> Группировать
      3. Если были выделены не целые строки при помощи их заголовков, а просто группа ячеек, то отобразится диалоговое окно, в котором пользователю будет предложено уточнить, что он группирует — строки или столбцы.
      4. Готово!

      Теперь раздел строк можно свернуть или развернуть, нажав на кнопки «+» или «-».
      Для отображения строк определенного уровня нужно нажать на кнопки 1, 2 и т.п., соответствующие уровню.

      По умолчанию кнопки «+»/ «-» расположены внизу, но чаще всего это неудобно и некрасиво. Поэтому сделаем небольшие изменения и разместим кнопку для группировки сверху.
      Для этого в настройках раздела «Структура» в Excel нужно откорректировать расположение итоговых данных и снять флаг «итоги в строках под данными»:

      Теперь сгруппированный список выглядит так:


пятница, 9 августа 2013 г.

Selenium: проверка присутствия элемента на странице

      Одной из наиболее частых проверок в автотестах является проверка присутствия какого-либо объекта на странице. В SeleniumIDE для этого существует метод isElementPresent, а для вебдрайвера такого метода нет, но можно написать свой собственный метод:

   public static boolean isElementPresent(By by) {
     try {
       driver.findElement(by);
       return true;
     } catch (NoSuchElementException e) {
       return false;
     }
   }

понедельник, 5 августа 2013 г.

Selenium: сохранение скриншота при неуспешном выполнении теста

После выполнения автоматического теста на Selenium необходимо проанализировать результаты, а если тест оказался провален, то нужно еще и понять причину. Для нахождения ошибки при выполнении теста можно пользоваться записями в логе. Но иногда записей бывает недостаточно И вообще, лучше один раз увидеть, чем сто раз… прочитать лог.

Для того, чтобы снять скриншот экрана, у Selenium есть метод getScreenshotAs. Снятый скриншот помещается во временный файл в формате .png. Нужно скопировать этот временный файл куда-нибудь, чтобы его сохранить, иначе он будет автоматически удален после окончания выполнения тестов. 
File scrFile = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
FileUtils.copyFile(scrFile, new File("C:/Work/screenshot.png"));


Итак, с сохранением скриншота все довольно просто. Но как сделать так, чтобы скриншот сохранялся только при неуспешном выполнении теста?

Для этого нужно воспользоваться возможностями фреймворка TestNG, а именно аннотацией @AfterMethod. Метод с такой аннотацией будет запускаться всегда после выполнения каждого тестового метода (для аннотации нужно обязательно указать alwaysRun = true). Далее нужно проверить результат выполнения теста ITestResult, и если результат неуспешный, то делаем скриншот.

В результате получаем: 
@AfterMethod(alwaysRun = true)
public void takeScreenshot(ITestResult result) { 

   if (! result.isSuccess()) {       File scrFile = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
      try {
         String scrFilePath = "C:/Work/screenshot.png";
         FileUtils.copyFile(scrFile, new File(scrFilePath));
         log.log(Level.SEVERE, "<a href='file:///" + scrFilePath + "'>"+ result.getMethod().getMethodName()</a>");
      } catch (IOException ex) {
         log.log(Level.SEVERE, null, ex);
      }
   }
}