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