19 Ставке претраживача

Преглед

Ставке прегледача омогућавају праћење сложених веб локација и веб апликација помоћу прегледача.

Подршка за ставке прегледача је тренутно експериментална.

Ставке прегледача прикупљају податке извршавањем кориснички дефинисаног JavaScript кода и преузимањем података преко HTTP/HTTPS протокола. Ова ставка може да симулира радње везане за прегледач као што су кликтање, унос текста, навигација кроз веб странице и друге интеракције корисника са веб локацијама или веб апликацијама.

Поред скрипте, може се навести опционална листа параметара (парови имена и вредности) и време чекања.

Ставка делимично имплементира W3C WebDriver стандард са Selenium Server-ом или обичним WebDriver-ом (на пример, ChromeDriver) као крајњом тачком веб тестирања. Да би ставка радила, подесите крајњу тачку у параметру WebDriverURL у конфигурационом фајлу Zabbix server/proxy (ако користите ChromeDriver, погледајте Безбедносна разматрања). За боље перформансе, размислите о коришћењу наменског сервера за окружење за веб тестирање.

Провере ставки прегледача извршавају и обрађују Zabbix сервер или прокси прегледачи. Ако је потребно, можете подесити број унапред форкованих инстанци прегледача у параметру StartBrowserPollers у конфигурационом фајлу Zabbix server/proxy.

За праћење сложених веб локација и веб апликација, шаблон Веб-сајт по прегледачу је доступан као готови шаблон.

Конфигурација

У пољу Тип у форми за конфигурацију ставке, изаберите Прегледач, а затим попуните потребна поља.

Сва обавезна поља за унос су означена црвеном звездицом.

Поља која захтевају специфичне информације за ставке Прегледача су:

Field Description
* Key* Унесите јединствени кључ који ће се користити за идентификацију ставке.
* Parameters* Наведите променљиве које ће се проследити скрипти као парови атрибута и вредности.
Подржани су кориснички макрои. Да бисте видели који су уграђени макрои подржани, потражите "Ставка типа прегледача" у табели подржани макрои.
* Script* Унесите JavaScript код у модални уређивач који се отвара кликом на поље параметра или на икону оловке поред њега. Овај код мора да обезбеди логику за враћање вредности метрике.
Код има приступ свим параметрима, свим додатним JavaScript објектима и JavaScript објектима ставки прегледача које је додао Zabbix.
Погледајте такође: JavaScript водич.
* Timeout* Временско ограничење за извршавање JavaScript-а (1-600s; прекорачење ће вратити грешку).
Имајте на уму да, у зависности од скрипте, може бити потребно дуже време да се активира временски ограничење.
За више информација о параметру Временско ограничење, погледајте општи атрибути ставке.

Примери

За пример како подесити Zabbix за праћење веб локација помоћу шаблона Веб локација помоћу прегледача, погледајте Праћење веб локација помоћу ставки прегледача.

Подразумевана скрипта

Следећа скрипта:

  1. Иницијализује сесију прегледача.
  2. Навигира до наведене URL адресе.
  3. Прикупља уносе перформанси и статистику сесије и враћа их као JSON стринг.

У поље Скрипта унесите:

var browser = new Browser(Browser.chromeOptions());
       
       try {
         browser.navigate("http://example.com");
         browser.collectPerfEntries();
       }
       finally {
         return JSON.stringify(browser.getResult());
       }
Иницијализација прегледача са прилагођеним могућностима

Следећа скрипта:

  1. Иницијализује сесију прегледача за доступни прегледач на основу првог одговарајућег прегледача редоследом наведеним у скрипти.
  2. Дефинише могућности прегледача, укључујући стратегију учитавања странице и опције специфичне за сваки прегледач, као што је режим без графичког приказа за прегледаче Chrome, Firefox и Microsoft Edge.

У поље Скрипта унесите:

var browser = new Browser({
          "capabilities":{
          "firstMatch":[
          {
          "browserName":"chrome",
          "pageLoadStrategy":"normal",
          "goog:chromeOptions":{
          "args":[
          "--headless=new"
          ]
          }
          },
          {
          "browserName":"firefox",
          "pageLoadStrategy":"normal",
          "moz:firefoxOptions":{
          "args":[
          "--headless"
          ]
          }
          },
          {
          "browserName":"MicrosoftEdge",
          "pageLoadStrategy":"normal",
          "ms:edgeOptions":{
          "args":[
          "--headless=new"
          ]
          }
          },
          {
                       "browserName":"сафари",
                       "pageLoadStrategy":"нормално"
                   }
               ]
           }
       });
Иницијализација прегледача са графичким корисничким интерфејсом

Подразумевано, сесије прегледача (осим Сафарија) се иницијализују у режиму без графичког интерфејса, што значи да графички кориснички интерфејс (GUI) прегледача није приказан.

Следећи скрипт иницијализује сесију прегледача са омогућеним GUI-јем.

Имајте на уму да ако WebDriver не може да пронађе бинарну датотеку прегледача, можете ручно навести путању.

var opts = Browser.chromeOptions();
       opts.capabilities.alwaysMatch['goog:chromeOptions'].args = [];
       
       // Да бисте иницијализовали Firefox сесију са графичким корисничким интерфејсом, уклоните коментаре из следећих редова:
       // var opts = Browser.firefoxOptions();
       // opts.capabilities.alwaysMatch['moz:firefoxOptions'].binary = 'usr/bin/firefox';
       // opts.capabilities.alwaysMatch['moz:firefoxOptions'].args = [];
       
       // Да бисте иницијализовали Microsoft Edge сесију са графичким корисничким интерфејсом, уклоните коментаре из следећих редова:
       // var opts = Browser.edgeOptions();
       // opts.capabilities.alwaysMatch['ms:edgeOptions'].binary = 'usr/bin/microsoft-edge';
       // opts.capabilities.alwaysMatch['ms:edgeOptions'].args = [];
       
       var browser = new Browser(opts);

Ако се ваши тестови извршавају на удаљеном серверу или у контејнеру, можете користити VNC (Virtual Network Computing) клијент за повезивање са VNC сервером машине. Ово вам омогућава даљински прегледате и интерагујете са графичким корисничким интерфејсом прегледача.

Прављење снимака екрана

Следећи скрипт:

  1. Иницијализује сесију прегледача.
  2. Поставља величину приказног дела прегледача да би се одредила величина снимка екрана (наведено као параметри, видети доле).
  3. Навигира до URL-а (наведеног као параметар, видети доле).
  4. Прикупља статистику сесије, прави снимак екрана и додаје га прикупљеној статистици.
  5. Обрађује грешке снимањем порука о грешкама и снимка екрана.
  6. Враћа прикупљене резултате као JSON стринг.

Скрипта такође користи параметре из форме за конфигурацију ставке:

  • webURL - http://example.com
  • ширина - 1920
  • висина - 1080

У поље Скрипта унесите:

var browser, result;
       
       var browser = new Browser(Browser.chromeOptions());
       
       try {
       var params = JSON.parse(value); // Рашчлањивање JSON стринга који садржи параметре прослеђене из Zabbix-а.
       
       browser.setScreenSize(Number(params.width), Number(params.height))
       
       browser.navigate(params.webURL);
       
       result = browser.getResult();
       
       result.screenshot = browser.getScreenshot();
       }
       catch (err) {
       if (!(err instanceof BrowserError)) {
       browser.setError(err.message);
       }
       result = browser.getResult();
       
       result.error.screenshot = browser.getScreenshot();
       }
       finally {
       return JSON.stringify(result);
       }
Провера пријаве на Zabbix

Следећа скрипта:

  1. Иницијализује сесију прегледача.
  2. Навигира до странице (наведене као параметар, видети доле).
  3. Уноси корисничко име и лозинку (наведене као параметри, видети доле).
  4. Проналази и кликће на дугме за пријаву.
  5. Проналази и кликће на дугме за одјаву.
  6. Прикупља податке о перформансама пре и после пријаве, као и након одјаве.
  7. Обрађује грешке снимањем порука о грешкама и снимком екрана.
  8. Враћа прикупљене резултате као JSON стринг.

Скрипта такође користи параметре из форме за конфигурацију ставке:

  • webURL - http://{HOST.CONN}/index.php
  • корисничко име - {$USERNAME}
  • лозинка - {$PASSWORD}

У поље Script унесите:

var browser, result;
       
       browser = new Browser(Browser.chromeOptions());
       
       try {
       var params = JSON.parse(value); // Рашчлањивање JSON стринга који садржи параметре прослеђене из Zabbix-а.
       
          browser.navigate(params.webURL);
          browser.collectPerfEntries("отвори страницу");
       
          var el = browser.findElement("xpath", "//input[@id='name']");
          if (el === null) {
          throw Error("не може се пронаћи поље за унос имена");
          }
          el.sendKeys(params.username);
       
          el = browser.findElement("xpath", "//input[@id='password']");
          if (el === null) {
          throw Error("не може се пронаћи поље за унос лозинке");
          }
          el.sendKeys(params.password);
       
          el = browser.findElement("xpath", "//button[@id='enter']");
          ако (ел === нуљ) {
          throw Error("не могу да пронађем дугме за пријаву");
          }
          el.click();
       
          browser.collectPerfEntries("пријава");
       
          el = browser.findElement("xpath", "//button[@id='enter']");
          if (el === null) {
          throw Error("не могу да пронађем дугме за одјаву");
          }
          el.click();
       
          browser.collectPerfEntries("одјава");
       
          резултат = browser.getResult();
       }
       catch (err) {
          if  (!(err instanceof BrowserError)) {
          browser.setError(err.message);
       }
          резултат = browser.getResult();
          result.error.screenshot= browser.getScreenshot();
       }
       finally {
       врати JSON.stringify(резултат);
       }
Проналажење линкова

Следећи скрипт:

  1. Иницијализује сесију прегледача.
  2. Дефинише функцију за уклањање дуплих елемената из низа (видети корак 5).
  3. Навигира до странице (наведене као параметри, видети доле).
  4. Проналази линкове на страници.
  5. Уклања дупле линкове како би се осигурало да су јединствени.
  6. Издваја само линкове који почињу са "http".
  7. Форматира издвојене линкове у одређену структуру.
  8. Обрађује грешке снимањем порука о грешкама и снимком екрана.
  9. Враћа прикупљене резултате као JSON стринг.

Скрипта такође користи параметре из форме за конфигурацију ставке:

  • scheme - {$WEBSITE.SCHEME}
  • domain - {$WEBSITE.DOMAIN}
  • path - {$WEBSITE.PATH}

У поље Script унесите:

var browser, result;
       
       browser = new Browser(Browser.chromeOptions());
       
       try {
       var params = JSON.parse(value); // Рашчлањује се JSON стринг који садржи параметре прослеђене из Zabbix.
       
          function uniq(a) {
          return a.sort().filter(function (item, pos, ary) {
          return !pos || item != ary[pos - 1];
          });
          }
       
          browser.navigate(params.scheme + '://' + params.domain + params.path);
       
          var el = browser.findElements("link text", "");
          var links = [];
          for (var n = 0; n < el.length; n++) {
          links.push(el[n].getAttribute('href'));
       }
       
          links = uniq(links);
       
          result = [];
          for (i = 0; i < links.length; i++) {
          if (links[i].match(/^http.*/)) {
          var row = {};
          row["{#URL}"] = links[i];
          result.push(row);
          }
          }
       }
       catch (err) {
          if (!(err instanceof BrowserError)) {
          browser.setError(err.message);
          }
          result = browser.getResult();
          result.error.screenshot = browser.getScreenshot();
       }
       finally {
          return JSON.stringify(result);
       }