2 浏览器 监控项 JavaScript objects
概述
本节描述了使用 Duktape 在 JavaScript 语言中为在 Browser item 脚本中使用而实现的 Zabbix 扩展。 这些扩展补充了 Additional JavaScript objects 页面上描述的 JavaScript objects。
Browser
Browser 对象用于管理 WebDriver 会话,在创建时初始化会话,并在销毁时终止会话。
单个脚本最多可支持四个 Browser 对象。
要构造 Browser 对象,请使用 new Browser(options) 语法。
options(JSON object)参数用于指定浏览器选项,通常为 WebDriver 选项方法的返回结果(例如,Browser.chromeOptions())。
Browser 对象支持以下方法。
| Method | Description |
|---|---|
navigate(url) |
导航到指定的 URL。 Parameters: url - (string) 要导航到的 URL。 |
getUrl() |
返回已打开页面 URL 的字符串。 |
getPageSource() |
返回已打开页面源代码的字符串。 |
findElement(strategy, selector) |
返回已打开页面中包含一个元素的 Element 对象(如果没有元素匹配 strategy 和 selector,则返回 null)。Parameters: strategy - (string, css selector/link text/partial link text/tag name/xpath) Location strategy;selector - (string) 使用指定定位策略的元素选择器。 |
findElements(strategy, target) |
返回已打开页面中包含多个元素的 Element 对象数组(如果没有元素匹配定位策略和 target,则返回空数组)。Parameters: strategy - (string, css selector/link text/partial link text/tag name/xpath) Location strategy;target - (string) 使用指定定位策略的元素选择器。 |
getCookies() |
返回 Cookie 对象数组。 |
addCookie(cookie) |
设置 cookie。 Parameters: cookie - (Cookie object) 要设置的 cookie。 |
getScreenshot() |
返回一个 Base64 编码字符串,表示浏览器视口的图像。 |
setScreenSize(x,y) |
设置浏览器视口大小。 Parameters: x - (string) 宽度,单位为像素;y - (string) 高度,单位为像素。 |
setScriptTimeout(timeout) |
设置脚本加载超时时间。 Parameters: timeout - (integer) 超时值,单位为毫秒。 |
setSessionTimeout(timeout) |
设置会话(页面加载)超时时间。 Parameters: timeout - (integer) 超时值,单位为毫秒。 |
setElementWaitTimeout(timeout) |
设置元素定位策略(隐式)超时时间。 Parameters: timeout - (integer) 超时值,单位为毫秒。 |
collectPerfEntries(mark) |
收集性能条目,以便通过 getResult() 方法检索。Parameters: mark - (string, optional) 性能快照标记。 |
getRawPerfEntries() |
返回性能条目对象数组。 |
getResult() |
返回一个 Result 对象,其中包含浏览器会话统计信息(错误信息、性能快照等)。 |
getError() |
返回一个包含浏览器错误的 BrowserError 对象(如果没有浏览器错误,则返回 null)。 |
setError(message) |
设置一个自定义错误消息,并将其包含在 Result 对象中。Parameters: message - (string) 错误消息。 |
discardError() |
丢弃将在 Result 对象中返回的错误。 |
getAlert() |
返回一个包含浏览器警报的 Alert 对象(如果没有浏览器警报,则返回 null)。 |
chromeOptions() |
返回一个带有预定义 Chrome 浏览器选项的 chromeOptions 对象。 |
firefoxOptions() |
返回一个带有预定义 Firefox 浏览器选项的 firefoxOptions 对象。 |
safariOptions() |
返回一个带有预定义 Safari 浏览器选项的 safariOptions 对象。 |
edgeOptions() |
返回一个带有预定义 Edge 浏览器选项的 edgeOptions 对象。 |
switchFrame(target) |
切换到指定的 frame。自 7.0.4 版本起支持。 Parameters: target - (browser element or integer, optional) 目标 frame。按元素选择 frame 时,请传入该元素。按索引选择 frame 时,请传入数字。如果留空,则切换到顶层浏览上下文。 |
所有 Browser 方法都可能抛出以下错误:
BrowserError- 由Error对象派生;当Browser构造函数失败时抛出;包含一个额外的browser属性,其中带有抛出此BrowserError的Browser对象。WebdriverError- 由BrowserError派生;包含与BrowserError对象相同的属性,表示该错误是否是针对 WebDriver 响应中的错误而生成的。
元素
Element object 是由 Browser object 的 findElement()/findElements() 方法返回的,不能直接构造。
Element object 表示网页中的一个元素,并提供了与其交互的方法。
Element object 支持以下方法。
| 方法 | 描述 |
|---|---|
getAttribute(name) |
返回元素属性的属性值 string(如果未找到指定属性,则返回 null)。参数: name - (string) 属性名称。 |
getProperty(name) |
返回元素属性的属性值 string(如果未找到指定属性,则返回 null)。参数: name - (string) 属性名称。 |
getText() |
返回元素文本的文本值 string。 |
click() |
单击元素。 |
clear() |
清除可编辑元素的内容。 |
sendKeys(keys) |
发送按键。 参数: keys - (string) 要发送的按键。 |
Cookie
Cookie 对象由 Browser 对象的 getCookies() 方法返回,并传递给 addCookie() 方法。
虽然 Cookie 对象没有任何方法,但它可以包含以下属性:
| Property | Type | Description |
|---|---|---|
| name | string | Cookie 的名称。 |
| value | string | Cookie 的值。 |
| path | string | Cookie 有效的路径。 如果在添加 cookie 时省略,则默认为 "/"。 |
| domain | string | Cookie 可见的域。 如果在添加 cookie 时省略,则默认为会话当前浏览上下文中活动文档的 URL 域。 |
| secure | boolean | 指示该 cookie 是否为安全 cookie。 如果在添加 cookie 时省略,则默认为 false。 |
| httpOnly | boolean | 指示该 cookie 是否仅限 HTTP。 如果在添加 cookie 时省略,则默认为 false。 |
| expiry | integer | Cookie 的过期时间(自 Unix 纪元以来的秒数)。如果在添加 cookie 时省略,则不得设置。 |
| sameSite | string | Cookie 的 sameSite 属性,用于控制该 cookie 是否应限制在第一方或同站点上下文中。可设置为 "Lax" 或 "Strict"。如果在添加 cookie 时省略,则默认为 "None"。 |
告警
Alert object 表示一个网页警告框,由 Browser object 的 getAlert() 方法返回,不能直接构造。
Alert object 包含一个 text 属性,该属性包含警告框的文本内容(如果没有警告框,则返回 null)。
Alert object 支持以下方法:
| 方法 | 描述 |
|---|---|
accept() |
接受警告框。 |
dismiss() |
取消警告框。 |
结果
Result object 包含会话统计信息,并由 Browser object getResult() 方法返回。
通常,Result object 会被字符串化并从脚本返回,然后通过预处理解析为依赖的 监控项值。
虽然 Result object 没有任何方法,但它可以包含以下属性。
| 属性 | 类型 | 描述 | ||
|---|---|---|---|---|
| duration | string | 从会话创建到结果检索的会话持续时间。 | ||
| error | object | 错误信息。 | ||
| http_status | integer | WebDriver 返回的 HTTP 状态(如果没有 WebDriver 错误,则为 0)。 | ||
| error_code | string | WebDriver 返回的错误(如果没有 WebDriver 错误,则为一个空的 string)。 | ||
| message | string | WebDriver 错误消息(如果没有 WebDriver 错误,则为一个空的 string)。 | ||
| performance_data | object | 性能统计信息。 | ||
| summary | object | 性能摘要。 | ||
| navigation | object | 导航摘要。 | ||
| resource | object | 资源摘要。 | ||
| details | array of objects | 每次可能导致导航的操作之后的性能统计信息。 | ||
| mark | string | (可选) 使用 collectPerfEntries() 方法指定的性能快照标记。 |
||
| navigation | object | 导航统计信息。 | ||
| resource | object | 此步骤的资源摘要。 | ||
| user | array of objects | 标记/测量类型的统计信息的 array。 | ||
| marks | array of objects | 已标记的性能快照索引。 | ||
| name | string | 性能快照标记名称。 | ||
| index | integer | 在 details 中的性能快照索引 array。 | ||