Ставке прегледача омогућавају праћење сложених веб локација и веб апликација помоћу прегледача.
Подршка за ставке прегледача је тренутно експериментална.
Ставке прегледача прикупљају податке извршавањем кориснички дефинисаног 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 за праћење веб локација помоћу шаблона Веб локација помоћу прегледача, погледајте Праћење веб локација помоћу ставки прегледача.
Следећа скрипта:
У поље Скрипта унесите:
var browser = new Browser(Browser.chromeOptions());
try {
browser.navigate("http://example.com");
browser.collectPerfEntries();
}
finally {
return JSON.stringify(browser.getResult());
}
Следећа скрипта:
У поље Скрипта унесите:
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 сервером машине. Ово вам омогућава даљински прегледате и интерагујете са графичким корисничким интерфејсом прегледача.
Следећи скрипт:
Скрипта такође користи параметре из форме за конфигурацију ставке:
У поље Скрипта унесите:
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);
}
Следећа скрипта:
Скрипта такође користи параметре из форме за конфигурацију ставке:
У поље 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(резултат);
}
Следећи скрипт:
Скрипта такође користи параметре из форме за конфигурацију ставке:
У поље 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);
}