2022 Zabbix中国峰会
2022 Zabbix中国峰会

2 浏览器项目 JavaScript 对象

概述

本节描述了使用Duktape实现的Zabbix对JavaScript语言的扩展,用于在浏览器项目脚本中使用。 这些扩展补充了附加JavaScript对象页面中描述的JavaScript对象。

浏览器

Browser对象管理WebDriver会话,在创建时初始化会话,并在销毁时终止会话。 单个脚本最多可以支持四个Browser对象。

要构造一个Browser对象,使用new Browser(options)语法。 optionsJSON对象)参数指定浏览器选项,通常是WebDriver选项方法的结果(例如,Browser.chromeOptions())。

以下方法与Browser对象一起使用。

方法 描述
navigate(url) 导航到指定的URL。

参数:
url - (字符串)要导航到的URL。
getUrl() 返回已打开页面的URL的字符串。
getPageSource() 返回已打开页面的源代码的字符串。
findElement(strategy, selector) 返回打开页面中一个元素的Element对象(如果没有元素与strategyselector匹配,则返回null)。

参数:
strategy - (字符串,CSS选择器/链接文本/部分链接文本/标签名/Xpath)定位策略;
selector - (字符串)使用指定定位策略的元素选择器。
findElements(strategy, target) 返回打开页面中多个元素的Element对象数组(如果没有元素与位置策略和目标匹配,则返回空数组)。

参数:
strategy - (字符串,CSS选择器/链接文本/部分链接文本/标签名/Xpath)定位策略;
target - (字符串)使用指定定位策略的元素选择器。
getCookies() 返回一个Cookie对象数组。
addCookie(cookie) 设置cookie。

参数:
cookie - (Cookie对象)要设置的cookie。
getScreenshot() 返回浏览器视口的字符串(base64编码的图像)。
setScriptTimeout(timeout) 设置脚本加载超时。

参数:
timeout - (整数)超时值(以毫秒为单位)。
setSessionTimeout(timeout) 设置会话(页面加载)超时。

参数:
timeout - (整数)超时值(以毫秒为单位)。
setElementWaitTimeout(timeout) 设置元素定位策略(隐式)超时。

参数:
timeout - (整数)超时值(以毫秒为单位)。
collectPerfEntries(mark) 收集性能条目以用于getResult()方法检索。

参数:
mark - (字符串,可选)性能快照标记。
getRawPerfEntries() 返回性能条目对象的数组。
getResult() 返回一个带有浏览器会话统计信息(错误信息、性能快照等)的Result对象。
getError() 返回一个带有浏览器错误的BrowserError对象(如果没有浏览器错误,则返回null)。
setError(message) 设置自定义错误消息,以包含在Result对象中。

参数:
message - (字符串)错误消息。
discardError() 丢弃要在Result对象中返回的错误。
getAlert() 返回一个带有浏览器警报的Alert对象(如果没有浏览器警报,则返回null)。
chromeOptions() 返回一个具有预定义Chrome浏览器选项的chromeOptions对象。
firefoxOptions() 返回一个具有预定义Firefox浏览器选项的firefoxOptions对象。
safariOptions() 返回一个具有预定义Safari浏览器选项的safariOptions对象。
edgeOptions() 返回一个具有预定义Edge浏览器选项的edgeOptions对象。

所有Browser方法都可能抛出以下错误:

  • BrowserError - 派生自抛出Browser构造函数失败的Error对象;包含一个额外的browser属性,其中包含抛出此BrowserErrorBrowser对象。
  • WebdriverError - 派生自BrowserError;包含与BrowserError对象相同的属性,指示错误是否是响应于WebDriver响应中的错误。#### 浏览器

Browser对象管理WebDriver会话,在创建时初始化会话,并在销毁时终止会话。 单个脚本最多可以支持四个Browser对象。

要构造一个Browser对象,使用new Browser(options)语法。 optionsJSON对象)参数指定浏览器选项,通常是WebDriver选项方法的结果(例如,Browser.chromeOptions())。

以下方法与Browser对象一起使用。

方法 描述
navigate(url) 导航到指定的URL。

参数:
url - (字符串)要导航到的URL。
getUrl() 返回已打开页面的URL的字符串。
getPageSource() 返回已打开页面的源代码的字符串。
findElement(strategy, selector) 返回打开页面中一个元素的Element对象(如果没有元素与strategyselector匹配,则返回null)。

参数:
strategy - (字符串,CSS选择器/链接文本/部分链接文本/标签名/Xpath)定位策略;
selector - (字符串)使用指定定位策略的元素选择器。
findElements(strategy, target) 返回打开页面中多个元素的Element对象数组(如果没有元素与位置策略和目标匹配,则返回空数组)。

参数:
strategy - (字符串,CSS选择器/链接文本/部分链接文本/标签名/Xpath)定位策略;
target - (字符串)使用指定定位策略的元素选择器。
getCookies() 返回一个Cookie对象数组。
addCookie(cookie) 设置cookie。

参数:
cookie - (Cookie对象)要设置的cookie。
getScreenshot() 返回浏览器视口的字符串(base64编码的图像)。
setScriptTimeout(timeout) 设置脚本加载超时。

参数:
timeout - (整数)超时值(以毫秒为单位)。
setSessionTimeout(timeout) 设置会话(页面加载)超时。

参数:
timeout - (整数)超时值(以毫秒为单位)。
setElementWaitTimeout(timeout) 设置元素定位策略(隐式)超时。

参数:
timeout - (整数)超时值(以毫秒为单位)。
collectPerfEntries(mark) 收集性能条目以用于getResult()方法检索。

参数:
mark - (字符串,可选)性能快照标记。
getRawPerfEntries() 返回性能条目对象的数组。
getResult() 返回一个带有浏览器会话统计信息(错误信息、性能快照等)的Result对象。
getError() 返回一个带有浏览器错误的BrowserError对象(如果没有浏览器错误,则返回null)。
setError(message) 设置自定义错误消息,以包含在Result对象中。

参数:
message - (字符串)错误消息。
discardError() 丢弃要在Result对象中返回的错误。
getAlert() 返回一个带有浏览器警报的Alert对象(如果没有浏览器警报,则返回null)。
chromeOptions() 返回一个具有预定义Chrome浏览器选项的chromeOptions对象。
firefoxOptions() 返回一个具有预定义Firefox浏览器选项的firefoxOptions对象。
safariOptions() 返回一个具有预定义Safari浏览器选项的safariOptions对象。
edgeOptions() 返回一个具有预定义Edge浏览器选项的edgeOptions对象。

所有Browser方法都可能抛出以下错误:

  • BrowserError - 源自抛出Browser构造函数失败的Error对象;包含一个额外的browser属性,其中包含抛出此BrowserErrorBrowser对象。
  • 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对象由Browser对象的getCookies()方法返回,并传递给addCookie()方法。

虽然Cookie对象没有任何方法,但它可以包含以下属性:

属性 类型 描述
name string cookie的名称。
value string cookie的值。
path string cookie有效的路径。
如果在添加cookie时省略,则默认为"/"
domain string cookie可见的域。
如果在添加cookie时省略,则默认为会话当前浏览上下文的活动文档的URL域。
secure boolean 指示cookie是否安全的布尔值。
如果在添加cookie时省略,则默认为false
httpOnly boolean 指示cookie是否为HTTP-only的布尔值。
如果在添加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 详细信息数组中的性能快照索引。