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

Преглед

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

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

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

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

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

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

За надгледање сложених веб локација Website by Browse шаблон је доступан као out-of-the-box шаблон.

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

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

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

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

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

Примери

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

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

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

  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());
       }
Проверите Zabbix пријаву

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

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

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

  • webURL - http://{HOST.CONN}/index.php
  • username - {$USERNAME}
  • password - {$PASSWORD}

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

var browser, result;
       
       browser = new Browser(Browser.chromeOptions());
       
       try {
          var params = JSON.parse(value); // Парсирајте JSON стринг који садржи параметре пренете из Zabbix-а.
       
          browser.navigate(params.webURL);
          browser.collectPerfEntries("open page");
       
          var el = browser.findElement("xpath", "//input[@id='name']");
          if (el === null) {
          throw Error("cannot find name input field");
          }
          el.sendKeys(params.username);
       
          el = browser.findElement("xpath", "//input[@id='password']");
          if (el === null) {
          throw Error("cannot find password input field");
          }
          el.sendKeys(params.password);
       
          el = browser.findElement("xpath", "//button[@id='enter']");
          if (el === null) {
          throw Error("cannot find login button");
          }
          el.click();
       
          browser.collectPerfEntries("login");
       
          el = browser.findElement("link text", "Sign out");
          if (el === null) {
          throw Error("cannot find logout button");
          }
          el.click();
       
          browser.collectPerfEntries("logout");
       
          result = browser.getResult();
       }
       catch (err) {
          if (!(err instanceof BrowserError)) {
          browser.setError(err.message);
          }
          result = browser.getResult();
          result.error.screenshot = browser.getScreenshot();
       }
       finally {
          return JSON.stringify(result);
       }
Пронађи везе

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

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

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

  • шема - {$WEBSITE.SCHEME}
  • домен - {$WEBSITE.DOMAIN}
  • путања - {$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);
       }
Иницијализујте претраживач са прилагођеним могућностима

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

  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":"safari",
            "pageLoadStrategy":"normal"
            }
            ]
            }
       });
Иницијализујте претраживач са GUI

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

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

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

var opts = Browser.chromeOptions();
       opts.capabilities.alwaysMatch['goog:chromeOptions'].args = [];
       
       // Да бисте иницијализовали Firefox сесију са GUI, декоментирај следеће редове:
       // var opts = Browser.firefoxOptions();
       // opts.capabilities.alwaysMatch['moz:firefoxOptions'].binary = 'usr/bin/firefox';
       // opts.capabilities.alwaysMatch['moz:firefoxOptions'].args = [];
       
       // Да бисте иницијализовали сесију Microsoft Edge са GUI-ом, скините коментар са следећих редова:
       // 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) да бисте се повезали са VNC сервером машине. Ово вам омогућава да видите и даљински комуницирајте са ГУИ претраживачем.

Направите снимке екрана

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

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

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

  • webURL - http://example.com
  • width - 1920
  • height - 1080

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

var browser, result;
       
       var browser = new Browser(Browser.chromeOptions());
       
       try {
          var params = JSON.parse(value); // Parse the JSON string containing parameters passed from 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);
       }