BrowserTestUtils 模块¶
- class BrowserTestUtils()¶
BrowserTestUtils 提供了在浏览器 mochitests 中处理浏览器的实用测试工具。此对象上提供了大多数常见操作(在选项卡和窗口之间打开、关闭和切换、加载 URL、等待父进程或内容进程中的事件、单击内容进程中的内容、注册 about 页面等)的专用帮助程序。
- static BrowserTestUtils.addContentEventListener(browser, eventName, listener, listenerOptions, checkFn)¶
在给定的浏览器元素上添加内容事件监听器。类似于 waitForContentEvent,但监听器将一直触发,直到将其移除。返回一个可调用的对象,当调用它时,会移除事件监听器。请注意,即使浏览器的 frameloader 被交换,此函数也能正常工作。
- 参数:
browser (xul:browser) – 要在其中监听事件的浏览器元素。
eventName (string) – 要监听的事件的名称。
listener (function) – 事件触发时在父进程中调用的函数。不传递任何参数。
listenerOptions (object) – [可选] 传递给事件监听器的选项。
checkFn (function) – [可选] 使用 Event 对象作为参数调用,如果事件是预期的事件,则应返回 true,否则如果应忽略它并且监听应继续,则返回 false。如果未指定,则具有指定名称的第一个事件会解析返回的 Promise。这是在内容进程中调用的,并且不能有任何闭包环境。
- 返回值:
function 如果调用,返回值将移除事件监听器。
- static BrowserTestUtils.addTab(tabbrowser, uri, params, beforeLoadFunc)¶
使用给定的 uri 和 params 对象打开一个选项卡。如果 params 对象未设置,或者 params 参数不包含触发主体,则此函数将使用 systemPrincipal 作为默认触发主体提供 params 对象。
- 参数:
tabbrowser (xul:tabbrowser) – 要使用其打开选项卡的 gBrowser 对象。
uri (string) – 在新选项卡中打开的 URI。
params (object) – [可选] gBrowser.addTab 的参数对象。
beforeLoadFunc (function) – [可选] 在创建 xul:browser 后但在加载 URL 之前运行的函数。例如,可以在选项卡中生成内容任务。
- static BrowserTestUtils.browserLoaded(browser, includeSubFrames=false, wantLoad="null", maybeErrorPage=false)¶
等待浏览器窗口中正在进行的页面加载完成。
这可以与任何用于启动加载的同步方法结合使用,例如“tabbrowser”上的“addTab”方法,并且必须在将控制权交给事件循环之前调用。请注意,在多个连续加载操作后调用此方法可能会出现竞争条件,因此在这些情况下应指定
wantLoad
。此函数通过监听
browser
上的自定义加载事件来工作。这些事件由 BrowserTestUtils 窗口参与者在响应“load”和“DOMContentLoaded”内容事件时发送。- 参数:
browser (xul:browser) – 一个 xul:browser。
includeSubFrames (Boolean) – 一个布尔值,指示是否应包含来自子框架的加载。
wantLoad (string|function) – 如果是函数,则获取 URL 并返回 true(如果那是我们感兴趣的加载)。如果是字符串,则给出我们感兴趣的加载的 URL。如果不存在,则第一个加载会解析 Promise。
maybeErrorPage (boolean) – 如果为 true,则使用 DOMContentLoaded 事件而不是 load 事件。此外,wantLoad 将使用可见 URL 调用,而不是错误页面的“about:neterror?…”。
- 返回值:
Promise –
- static BrowserTestUtils.browserStarted(browser, expectedURI)¶
等待与此选项卡关联的 Web 进度监听器为顶级文档触发 STATE_START。
- 参数:
browser (xul:browser) – 一个 xul:browser。
expectedURI (String) – (可选) 要检查通道加载的特定 URL
- 返回值:
Promise –
- static BrowserTestUtils.browserStopped(browser, expectedURI, checkAborts)¶
等待与此选项卡关联的 Web 进度监听器为顶级文档触发 STATE_STOP。
- 参数:
browser (xul:browser) – 一个 xul:browser。
expectedURI (String) – (可选) 要检查通道加载的特定 URL
checkAborts (Boolean) – (可选,默认为 false) 是否 NS_BINDING_ABORTED 将“count”计为“真实”停止(例如,由停止按钮或等效 API 导致)
- 返回值:
Promise –
- static BrowserTestUtils.closeWindow(win)¶
关闭窗口。
- 参数:
win (Window) – 要关闭的窗口。
- 返回值:
Promise – 在提供的窗口关闭时解析。对于浏览器窗口,Promise 还将等待来自所有浏览器选项卡的所有最终 SessionStore 消息发送完毕。
- static BrowserTestUtils.contentTopicObserved(aBrowsingContext, aTopic, aCount, aFilterFn)¶
- 有两种方法可以监听内容进程中的观察者
调用 contentTopicObserved,它将监视内容进程中观察者通知的发生,并返回一个 Promise,该 Promise 在该通知发生时解析。
将对 contentTopicObserved 的调用括在对 startObservingTopics 和 stopObservingTopics 的调用对中。通常,此对将放置在测试或一组测试的开头和结尾。在开始和停止之间发生的任何不与使用 contentTopicObserved 明确期望的任何内容匹配的观察者通知都将导致 stopObservingTopics 拒绝并显示错误。例如
await BrowserTestUtils.startObservingTopics(bc, [“a”, “b”, “c”]); await BrowserTestUtils contentTopicObserved(bc, “a”, 2); await BrowserTestUtils.stopObservingTopics(bc, [“a”, “b”, “c”]);
这将期望发生两个“a”通知,但如果发生超过两个通知,或者如果发生任何“b”或“c”通知,则会失败。
请注意,此函数不会处理多次为同一主题添加监听器。为此,请使用 aCount 参数。
- 参数:
aBrowsingContext – 与要监听的内容进程关联的浏览上下文。
aTopic (string) – 要监听的观察者主题。可以为 null 以监听任何主题。
aCount (number) – 要监听此类匹配主题的数量,默认为 1。当主题和筛选器函数匹配时,就会发生匹配。
aFilterFn (function) – 在内容进程中计算的函数,如果通知匹配,则应返回 true。此函数传递与 nsIObserver.observe() 相同的参数。可以为 null 以始终匹配。
- 返回值:
Promise – 通知发生时解析。
- static BrowserTestUtils.crashFrame((Browser), (bool), (BrowsingContext), (object?))¶
使远程框架选项卡崩溃并清理生成的 minidump。解析 .extra 文件中的数据(崩溃注释)。
- 参数:
(Browser) – browser 一个远程 <xul:browser> 元素。不能为 null。
(bool) – shouldShowTabCrashPage 如果预期将显示此浏览器的选项卡崩溃页面,则为 true。如果是这样,Promise 将仅在选项卡崩溃页面加载后才解析。
(bool) – shouldClearMinidumps 如果应删除崩溃留下的 minidump,则为 true。
(BrowsingContext) – browsingContext 框架离开的上下文。如果未提供,则默认为顶级上下文。
(object?) – options 具有以下任何字段的对象:crashType: “CRASH_INVALID_POINTER_DEREF” | “CRASH_OOM” | “CRASH_SYSCALL” 崩溃类型。如果未指定,则默认为“CRASH_INVALID_POINTER_DEREF” asyncCrash: bool 如果指定且为true,则异步导致崩溃。
- 返回值:
(Promise)
- static BrowserTestUtils.domWindowClosed(win)¶
- 参数:
win – (可选) 我们应该等待通过观察者服务发送“domwindowclosed”的窗口。如果未提供此参数,我们将在看到第一个“domwindowclosed”通知时解析。
- 返回值:
Promise – 当窗口观察器触发“domwindowclosed”通知时解析的 Promise。
- static BrowserTestUtils.domWindowOpened(win, checkFn)¶
- 参数:
win – (可选) 我们应该等待通过观察者服务发送“domwindowopened”的窗口。如果未提供此参数,我们将在看到第一个“domwindowopened”通知时解析。
checkFn (function) – [可选] 使用 nsIDOMWindow 对象作为参数调用,如果事件是预期的事件,则应返回 true,否则如果应忽略它并且观察应继续,则返回 false。如果未指定,则第一个窗口会解析返回的 Promise。
- 返回值:
Promise – 当窗口观察器触发“domwindowopened”通知时解析的 Promise。
- static BrowserTestUtils.domWindowOpenedAndLoaded(win, checkFn)¶
- 参数:
win – (可选) 我们应该等待其通过观察者服务发送“domwindowopened”的窗口。如果未提供,则仅在看到第一个“domwindowopened”通知时解析。一旦新窗口的文档加载完成,promise 将被解析。
checkFn (function) – (可选) 以 nsIDOMWindow 对象作为参数调用,如果事件是预期的事件,则应返回 true,否则如果应忽略它并且应继续观察,则返回 false。如果未指定,则第一个窗口将解析返回的 promise。
- 返回值:
Promise – 当窗口观察器触发“domwindowopened”通知时解析的 Promise。
- static BrowserTestUtils.firstBrowserLoaded(window, aboutBlank, checkFn)¶
等待选定的浏览器在新窗口中加载。当您有一个可能尚未加载其 DOM 的窗口,并且您无法轻松地在 gBrowser.selectedBrowser 上使用 browserLoaded(因为 gBrowser 尚未存在)时,这非常有用。
- 参数:
window (xul:window) – 一个新打开的窗口,我们正在等待其第一个浏览器加载。
aboutBlank (Boolean) – [可选] 如果为 false,则忽略 about:blank 加载,并且我们将继续等待。
checkFn (function|null) – [可选] 如果 checkFn(browser) 返回 false,则忽略加载并继续等待。
- 返回值:
Promise –
- static BrowserTestUtils.getBrowsingContextFrom()¶
如果参数是 browsingContext,则返回它。如果参数是浏览器/框架,则返回其 browsing context。
- static BrowserTestUtils.isHidden(element)¶
检查 DOM 元素是否隐藏。
- 参数:
element (Element) – 要检查的元素。
- 返回值:
boolean –
- static BrowserTestUtils.isVisible(element)¶
检查 DOM 元素是否可见。
- 参数:
element (Element) – 要检查的元素。
- 返回值:
boolean –
- static BrowserTestUtils.maybeCreatePreloadedBrowser(gBrowser)¶
可能创建一个预加载的浏览器并确保它已完成加载。
- 参数:
gBrowser – (<xul:tabbrowser>) 要在其中预加载浏览器的 tabbrowser。
- static BrowserTestUtils.openNewBrowserWindow(options)¶
从现有窗口打开一个新的浏览器窗口。这依赖于 browser.js 中的 OpenBrowserWindow,并在窗口完全加载之前等待解析。
- 参数:
options (Object) – 传递给 OpenBrowserWindow 的选项。此外,还支持
options.waitForTabURL (bool) – 强制初始 browserLoaded 检查等待选项卡加载给定的 URL(而不是 about:blank)
- 返回值:
Promise – 加载完成后,使用新窗口解析。
- static BrowserTestUtils.openNewForegroundTab(gBrowser, opening, waitForLoad, waitForStateStop, forceNewProcess)¶
在前台打开一个新标签页。
此函数采用选项对象(首选)或实际参数。选项的名称必须与下面的名称相对应。gBrowser 是必需的,所有其他选项都是可选的。
- 参数:
gBrowser (tabbrowser) – 要在新标签页中打开标签页的 tabbrowser。
opening (string) – (或 url) 可以是将在标签页中加载的字符串 URL,也可以是将被调用的函数以打开前台标签页。默认为“about:blank”。
waitForLoad (boolean) – 如果要等待新标签页中的页面加载,则为 true。默认为 true。
waitForStateStop (boolean) – 如果要等待 Web 进度侦听器发送标签页中文档的 STATE_STOP,则为 true。默认为 false。
forceNewProcess (boolean) – 如果要强制新标签页在新进程中加载,则为 true。默认为 false。
- 返回值:
Promise – 当标签页准备就绪并根据需要加载时解析。
- static BrowserTestUtils.overflowTabs(registerCleanupFunction, win, params)¶
创建足够的标签页以在给定窗口中导致标签页溢出。
- 参数:
registerCleanupFunction (function) – 测试框架不会将其清理内容保存在任何可访问的地方,因此第一个参数是对您的清理注册函数的引用,允许我们根据需要在您之后进行清理。
win (Window) – 需要溢出标签页的窗口。
params (object) – [可选] BrowserTestUtils.overflowTabs 的参数对象。overflowAtStart: bool 确定新标签页是在 URL 地址栏的开头还是结尾添加。overflowTabFactor: 3 | 1.1 有助于确定溢出标签页计数的因子。
- static BrowserTestUtils.promiseAlertDialog(buttonNameOrElementID, uri)¶
等待对话框打开,然后单击指定的按钮,并等待对话框关闭。
- 参数:
buttonNameOrElementID (string) – 要单击的按钮的名称(“accept”、“cancel”等)或元素 ID。
uri (string) – 要等待的对话框的 URI。默认为通用对话框。
- 返回值:
Promise – 当窗口观察程序已触发对话框的“domwindowopened”通知并单击了指定的按钮,并且对话框已完全关闭时解析的 Promise。
- static BrowserTestUtils.promiseAlertDialogOpen(buttonNameOrElementID, uri)¶
等待对话框打开,然后单击指定的按钮。
- 参数:
buttonNameOrElementID (string) – 要单击的按钮的名称(“accept”、“cancel”等)或元素 ID。
uri (string) – 要等待的对话框的 URI。默认为通用对话框。
- 返回值:
Promise – 当窗口观察程序已触发对话框的“domwindowopened”通知并单击了指定的按钮时解析的 Promise。
- static BrowserTestUtils.registerAboutPage(registerCleanupFunction, aboutModule, pageURI, flags)¶
在父进程和任何内容进程中使用特定标志注册 about: 页面。返回一个 promise,该 promise 在注册完成后解析。
- 参数:
registerCleanupFunction (function) – 测试框架不会将其清理内容保存在任何可访问的地方,因此第一个参数是对您的清理注册函数的引用,允许我们根据需要在您之后进行清理。
aboutModule (String) – about 页面的名称。
pageURI (String) – about: 页面应指向的 URI。
flags (Number) – 用于注册的 nsIAboutModule 标志。
- 返回值:
Promise – 注册完成后解析的 Promise。
- static BrowserTestUtils.reloadTab(tab, includeSubFrames=false)¶
- 参数:
tab (tab) – 将重新加载的标签页。
includeSubFrames (Boolean) – 一个布尔值,指示在等待框架重新加载时是否应包含来自子框架的加载。
- 返回值:
Promise –
- static BrowserTestUtils.removeTab((tab), (Object))¶
从其父 tabbrowser 中删除给定的标签页。此方法不使用 SessionStore 等。
- 参数:
(tab) – tab 要删除的标签页。
(Object) – options 要传递给 tabbrowser 的 removeTab 方法的额外选项。
- static BrowserTestUtils.sendAsyncMessage(aBrowsingContext, aMessageName, aMessageData)¶
向特定的 BrowserTestUtils 窗口 actor 发送消息。
- 参数:
aBrowsingContext (BrowsingContext) – actor 所在的 browsing context。
aMessageName (string) – 要发送到 actor 的消息的名称。
aMessageData (object) – 要传递给 actor 的额外信息。
- static BrowserTestUtils.sendChar(char, browsingContext)¶
EventUtils 的 sendChar 函数的版本;它将在子进程中合成一个键盘按下事件,并返回一个 Promise,该 Promise 在事件触发时解析。需要传递 Browser 或 Browsing Context 而不是 Window 到此函数。
- 参数:
char (String) – 发送到浏览器的键盘按下事件的字符。
browsingContext (BrowserContext|MozFrameLoaderOwner) – Browsing context 或浏览器元素,不得为 null
- 返回值:
Promise –
- static BrowserTestUtils.sendQuery(aBrowsingContext, aMessageName, aMessageData)¶
向特定的 BrowserTestUtils 窗口 actor 发送查询。
- 参数:
aBrowsingContext (BrowsingContext) – actor 所在的 browsing context。
aMessageName (string) – 要发送到 actor 的消息的名称。
aMessageData (object) – 要传递给 actor 的额外信息。
- static BrowserTestUtils.simulateProcessLaunchFail(browser)¶
尝试通过崩溃浏览器来模拟启动失败,但会剥夺浏览器的 childID,以便 TabCrashHandler 认为这是一个启动失败。
- 参数:
浏览器 – (<xul:browser>) 要在其上模拟内容进程启动失败的浏览器。
- 返回值:
Promise
- static BrowserTestUtils.startLoadingURIString(browser, uri)¶
在给定的浏览器中启动加载新的 URI,由系统主体触发。请注意,这不会等待加载完成。为此,您可以使用 BrowserTestUtils.browserLoaded()、BrowserTestUtils.waitForErrorPage() 或创建自己的处理程序。
- 参数:
browser (xul:browser) – 一个 xul:browser。
uri (字符串) – 要加载的 URI。
- static BrowserTestUtils.startObservingTopics(aBrowsingContext, aTopics)¶
开始在内容进程中观察主题列表。使用 contentTopicObserved 允许观察者通知。发生的任何其他与指定主题之一匹配的观察者通知都将导致 Promise 拒绝。
多次调用此函数会添加其他要观察的主题,而不会替换现有的主题。
- 参数:
aBrowsingContext (BrowsingContext) – 与要监听的内容进程关联的浏览上下文。
aTopics (Array.<String>) – 观察者主题数组
- 返回值:
Promise – 在添加侦听器后解析。
- static BrowserTestUtils.stopObservingTopics(aBrowsingContext, aTopics)¶
停止侦听一组观察者主题。
- 参数:
aBrowsingContext (BrowsingContext) – 与要监听的内容进程关联的浏览上下文。
aTopics (Array.<String>) – 观察者主题数组。如果为空,则删除当前正在侦听的所有主题。
- 返回值:
Promise – 如果发生意外的观察者,则此 Promise 会失败。
- static BrowserTestUtils.switchTab(tabbrowser, tab)¶
切换到一个标签页并在准备好后解析。
- 参数:
tabbrowser (tabbrowser) – tabbrowser。
tab (tab) – 要切换到的标签页元素或执行切换的功能。
- 返回值:
Promise – 切换到标签页后解析。
- static BrowserTestUtils.synthesizeComposition(event, browsingContext)¶
EventUtils 的 synthesizeComposition 函数的版本;它将在子进程中合成一个合成事件,并返回一个 Promise,该 Promise 在事件触发时解析。需要将浏览器或浏览上下文而不是窗口传递给此函数。
- 参数:
event (对象) – 请参阅 EventUtils#synthesizeComposition 提供的文档。
browsingContext (BrowserContext|MozFrameLoaderOwner) – Browsing context 或浏览器元素,不得为 null
- 返回值:
Promise –
- static BrowserTestUtils.synthesizeCompositionChange(event, browsingContext)¶
EventUtils 的 synthesizeCompositionChange 函数的版本;它将在子进程中合成一个 compositionchange 事件,并返回一个 Promise,该 Promise 在事件触发时解析。需要将浏览器或 Browsing Context 对象而不是窗口传递给此函数。
- 参数:
event (对象) – 请参阅 EventUtils#synthesizeCompositionChange 提供的文档。
browsingContext (BrowserContext|MozFrameLoaderOwner) – Browsing context 或浏览器元素,不得为 null
- 返回值:
Promise –
- static BrowserTestUtils.synthesizeKey(key, event, browsingContext)¶
EventUtils 的 synthesizeKey 函数的版本;它将在子进程中合成一个键盘事件,并返回一个 Promise,该 Promise 在事件触发时解析。需要将浏览器或浏览上下文而不是窗口传递给此函数。
- 参数:
key (字符串) – 请参阅 EventUtils#synthesizeKey 提供的文档。
event (对象) – 请参阅 EventUtils#synthesizeKey 提供的文档。
browsingContext (BrowserContext|MozFrameLoaderOwner) – Browsing context 或浏览器元素,不得为 null
- 返回值:
Promise –
- static BrowserTestUtils.synthesizeMouse(target, offsetX, offsetY, event, browsingContext, handlingUserInput)¶
- EventUtils.sys.mjs synthesizeMouse 函数的版本,用于在子进程中合成
鼠标事件并返回 Promise,这些 Promise 在事件触发并完成时解析。需要将浏览器或浏览上下文而不是窗口传递给此函数。
- 参数:
target – 以下之一: - 用于识别要定位元素的选择器字符串。语法与 querySelector 相同。 - 要在内容进程中运行以返回要定位元素的功能 - null,在这种情况下,偏移量来自内容文档的边缘。
offsetX (整数) – 相对于目标左侧边界的 x 偏移量
offsetY (整数) – 相对于目标顶部边界的 y 偏移量
event (对象) – 对象 其他参数,类似于 EventUtils.sys.mjs 版本
browsingContext (BrowserContext|MozFrameLoaderOwner) – Browsing context 或浏览器元素,不得为 null
handlingUserInput (布尔值) – 是否应在模拟用户交互时执行合成(使 windowUtils.isHandlingUserInput 为 true)。
- 返回值:
Promise –
- static BrowserTestUtils.synthesizeMouseAtCenter()¶
- 使用目标中心作为鼠标的 synthesizeMouse 版本
位置。参数和返回值相同。
- static BrowserTestUtils.synthesizeMouseAtPoint()¶
- 使用子窗口内的客户端点而不是目标作为偏移量的 synthesizeMouse 版本。
否则,参数和返回值与 synthesizeMouse 相同。
- static BrowserTestUtils.synthesizeTouch(target, offsetX, offsetY, event, browsingContext)¶
- EventUtils.sys.mjs synthesizeTouch 函数的版本,用于在子进程中合成
触摸事件并返回 Promise,这些 Promise 在事件触发并完成时解析。需要将浏览器或浏览上下文而不是窗口传递给此函数。
- 参数:
target – 以下之一: - 用于识别要定位元素的选择器字符串。语法与 querySelector 相同。 - 要在内容进程中运行以返回要定位元素的功能 - null,在这种情况下,偏移量来自内容文档的边缘。
offsetX (整数) – 相对于目标左侧边界的 x 偏移量
offsetY (整数) – 相对于目标顶部边界的 y 偏移量
event (对象) – 对象 其他参数,类似于 EventUtils.sys.mjs 版本
browsingContext (BrowserContext|MozFrameLoaderOwner) – Browsing context 或浏览器元素,不得为 null
- 返回值:
Promise –
- static BrowserTestUtils.waitForAttribute(attr, element, value)¶
返回一个 Promise,当元素获得属性(或可选地,当它设置为 value 时)时解析。
- 参数:
attr (字符串) – 要等待的属性
element (元素) – 应该获得该属性的元素
value (字符串) – (可选)可选,属性应具有的值。
- 返回值:
Promise –
- static BrowserTestUtils.waitForAttributeRemoval(attr, element)¶
返回一个 Promise,当元素失去属性时解析。
- 参数:
attr (字符串) – 要等待的属性
element (元素) – 应该失去该属性的元素
- 返回值:
Promise –
- static BrowserTestUtils.waitForBrowserStateChange(browser, expectedURI, checkFn)¶
等待与此标签关联的 Web 进度侦听器触发与顶级文档的 checkFn 匹配的状态更改。
- 参数:
browser (xul:browser) – 一个 xul:browser。
expectedURI (String) – (可选) 要检查通道加载的特定 URL
checkFn (函数) – 如果 checkFn(aStateFlags, aStatus) 返回 false,则忽略状态更改,我们继续等待。
- 返回值:
Promise –
- static BrowserTestUtils.waitForContentEvent(eventName, capture, checkFn, wantUntrusted)¶
类似于 waitForEvent,但将事件侦听器添加到浏览器的消息管理器全局。
- 参数:
eventName (string) – 要监听的事件的名称。
capture (布尔值) – [可选] 是否使用捕获侦听器。
checkFn (函数) – [可选] 使用事件对象作为参数调用,如果事件是预期的事件,则应返回 true,否则应返回 false,并且侦听应继续。如果未指定,则具有指定名称的第一个事件会解析返回的 Promise。
wantUntrusted (布尔值) – [可选] 是否接受不受信任的事件
- 返回值:
Promise –
- static BrowserTestUtils.waitForDateTimePickerPanelShown(win)¶
等待日期时间选择器弹出窗口显示。
- 参数:
win (Window) – 期望弹出窗口所在的窗口。
- 返回值:
Promise – 弹出窗口完全打开后解析。解析值为选择弹出窗口。
- static BrowserTestUtils.waitForDialogClose(dialog)¶
等待包含 id 为 window-modal-dialog 的对话框变为空并关闭。
- 参数:
dialog (HTMLDialogElement) – 要等待的对话框。
- 返回值:
Promise – 对话框关闭后解析
- static BrowserTestUtils.waitForDocLoadAndStopIt(expectedURL, browser, checkFn)¶
等待当前浏览器中下一个顶级文档加载。文档的 URI 与 expectedURL 进行比较。然后在加载实际开始之前停止加载。
- 参数:
expectedURL (string) – 预期加载的文档的 URL。
browser (object) – 要等待的浏览器。
checkFn (function) – (可选) 在停止通道之前在其上运行的函数。
- 返回值:
Promise –
- static BrowserTestUtils.waitForErrorPage(browser)¶
类似于 browserLoaded,但等待错误页面出现。
- 参数:
browser (xul:browser) – 一个 xul:browser。
- 返回值:
Promise –
- static BrowserTestUtils.waitForEvent(subject, eventName, capture, checkFn, wantsUntrusted=false)¶
等待在指定元素上触发事件。
- 参数:
subject (Element) – 应该接收事件的元素。
eventName (string) – 要监听的事件的名称。
capture (bool) – 为 true 表示使用捕获监听器。
checkFn (function) – 使用 Event 对象作为参数调用,如果事件是预期事件则应返回 true,否则如果应忽略它并且监听应该继续则返回 false。如果未指定,则第一个具有指定名称的事件将解析返回的 promise。
wantsUntrusted (bool) – 为 true 表示接收由 Web 内容分派的合成事件。
- 返回值:
Promise –
示例
let promiseEvent = BrowserTestUtils.waitForEvent(element, "eventName"); // Do some processing here that will cause the event to be fired // ... // Now wait until the Promise is fulfilled let receivedEvent = await promiseEvent;
// The promise resolution/rejection handler for the returned promise is // guaranteed not to be called until the next event tick after the event // listener gets called, so that all other event listeners for the element // are executed before the handler is executed. let promiseEvent = BrowserTestUtils.waitForEvent(element, "eventName"); // Same event tick here. await promiseEvent; // Next event tick here.
// If some code, such like adding yet another event listener, needs to be // executed in the same event tick, use raw addEventListener instead and // place the code inside the event listener. element.addEventListener("load", () => { // Add yet another event listener in the same event tick as the load // event listener. p = BrowserTestUtils.waitForEvent(element, "ready"); }, { once: true });
- static BrowserTestUtils.waitForGlobalNotificationBar(win, notificationValue)¶
等待在给定浏览器窗口的全局 <xul:notificationbox> 中出现具有特定值的 <xul:notification>。
- 参数:
win (Window) – 预期在其中显示通知的浏览器窗口的全局 notificationbox。
notificationValue (String) – 通知的值,通常用作唯一标识符。例如:“captive-portal-detected”。
- 返回值:
Promise – 解析为正在显示的 <xul:notification>。
- static BrowserTestUtils.waitForLocationChange(tabbrowser, url)¶
等待 onLocationChange。
- 参数:
tabbrowser (tabbrowser) – 要等待其位置更改的 tabbrowser。
url (string) – 要查找的字符串 URL。URL 必须与地址栏中的 URL 完全匹配。
- 返回值:
Promise –
- static BrowserTestUtils.waitForMessage(messageManager, message, checkFn)¶
等待从特定消息管理器触发消息
- 参数:
messageManager (nsIMessageManager) – 应该使用的消息管理器。
message (String) – 我们正在等待的消息。
checkFn (function) – (可选) 用于检查消息的可选函数。
- static BrowserTestUtils.waitForMigrationWizard(window)¶
此测试的辅助函数,它返回一个 Promise,该 Promise 在迁移向导出现后解析。
- 参数:
window (DOMWindow) – 如果启用了新的迁移向导,则 about:preferences 选项卡可能会在其中打开的顶级窗口。
- 返回值:
Promise.<Element> – 解析为打开的 about:preferences 选项卡,其中迁移向导正在运行并已加载。
- static BrowserTestUtils.waitForMutationCondition(target, options, checkFn)¶
等到 DOM 突变导致 checkFn 中表达的条件通过。
旨在作为 waitForCondition 的易于使用的替代方案。
- 参数:
target (Element) – 要在其中观察突变的目标。
options (Object) – 传递给 MutationObserver.observe() 的选项;
checkFn (function) – 当它希望 promise 解析时返回 true 的函数。
- static BrowserTestUtils.waitForNewTab(tabbrowser, wantLoad="null", waitForLoad=false, waitForAnyTab=false, maybeErrorPage=false)¶
等待选项卡打开并加载给定 URL。
默认情况下,此方法不会等待选项卡内容加载。
- 参数:
tabbrowser (tabbrowser) – 要在其中查找下一个新选项卡的 tabbrowser。
wantLoad (string|function) – 如果是函数,则获取 URL 并返回 true(如果那是我们感兴趣的加载)。如果是字符串,则提供我们感兴趣的加载的 URL。如果不存在,则使用第一个非 about:blank 加载。
waitForLoad (boolean) – 为 true 表示等待新选项卡中的页面加载。默认为 false。
waitForAnyTab (boolean) – 为 true 表示等待 URL 在任何新选项卡中加载,而不仅仅是打开的下一个选项卡。
maybeErrorPage (boolean) – 请参阅
browserLoaded
函数。
- 返回值:
Promise –
- static BrowserTestUtils.waitForNewWindow(aParams)¶
等待下一个浏览器窗口打开并完全加载。
- 参数:
aParams (Object)
aParams.url (string) – 要等待加载的 url。如果未设置,则根据 waitForAnyURLLoaded 参数,这可能会或可能不会等待任何页面加载。
aParams.waitForAnyURLLoaded (bool) – 当 url 未设置时,这将控制是否等待任何初始 URL 加载。默认为 false,这意味着当此值解析时,初始浏览器可能已完成加载其第一个页面,也可能未完成。当 url 设置时,将忽略此值,因此始终等待加载。
aParams.anyWindow (bool)
aParams.maybeErrorPage (bool) – 请参阅
browserLoaded
函数。
- 返回值:
Promise – 当下一个 DOM 窗口打开并延迟启动观察者通知触发时解析的 Promise。
- static BrowserTestUtils.waitForNotificationBar(tabbrowser, browser, notificationValue)¶
等待在传递的浏览器的 <xul:notificationbox> 中出现具有特定值的 <xul:notification>。
- 参数:
tabbrowser (xul:tabbrowser) – 托管应显示通知的浏览器的 gBrowser。对于大多数测试,这可能是 gBrowser。
browser (xul:browser) – 应该显示通知的浏览器。
notificationValue (String) – 通知的值,通常用作唯一标识符。例如:“plugin-crashed”。
- 返回值:
Promise – 解析为正在显示的 <xul:notification>。
- static BrowserTestUtils.waitForPopupEvent(popup, eventSuffix)¶
类似于 waitForEvent,但作用于弹出窗口。它确保弹出窗口尚未处于预期状态。
- 参数:
popup (Element) – 应该接收事件的弹出窗口元素。
eventSuffix (string) – 预期接收的事件后缀,为“shown”或“hidden”之一。
- 返回值:
Promise –
- static BrowserTestUtils.waitForSelectPopupShown(win)¶
等待选择弹出窗口显示。这是必需的,因为选择下拉菜单是延迟创建的。
- 参数:
win (Window) – 期望弹出窗口所在的窗口。
- 返回值:
Promise – 弹出窗口完全打开后解析。解析值为选择弹出窗口。
- static BrowserTestUtils.waitForSessionStoreUpdate(tab)¶
返回一个 Promise,该 Promise 在给定选项卡的 SessionStore 信息更新且所有侦听器都已调用后解析。
- 参数:
tab (xul:tab) – 将被移除的选项卡。
- 返回值:
Promise –
- static BrowserTestUtils.waitForTabClosing((tab))¶
返回一个 Promise,该 Promise 在选项卡开始关闭时解析。
- 参数:
(tab) – tab 将被移除的选项卡。
- 返回值:
(Promise)
- static BrowserTestUtils.waitForTransition(element, timeout)¶
等待元素的 CSS 过渡完成。跟踪在此函数调用后开始的任何过渡,并在所有启动的过渡完成后解析。
- 参数:
element (Element) – 将过渡的元素。
timeout (Number) – 最多等待的时间(以毫秒为单位)。默认为 5 秒。
- 返回值:
Promise – 过渡完成后解析,或者如果超时则拒绝。
- static BrowserTestUtils.windowClosed(win)¶
返回一个 Promise,该 Promise 在窗口完成关闭时解析。
- 参数:
win (Window) – 关闭的窗口。
- 返回值:
Promise – 提供的窗口完全关闭后解析。对于浏览器窗口,Promise 还将等待来自所有浏览器选项卡的所有最终 SessionStore 消息发送完成。
- static BrowserTestUtils.withNewTab(options, taskFn)¶
在新的标签页中加载页面,执行一个任务,然后关闭标签页。
- 参数:
options (Object|String) – 如果这是一个字符串,则表示要打开的 URL,并且将在当前活动浏览器窗口中打开。
options.gBrowser (tabbrowser) – 对
tabbrowser
元素的引用,新标签页应在此处打开。options.url (string) – 要加载的页面的 URL。
taskFn (function) – 表示将在标签页加载时执行的异步函数。传递给函数的第一个参数是对新标签页浏览器对象的引用。
- 返回值:
Any – 返回 taskFn 返回的值。