📜  Protractor-核心APIS

📅  最后修改于: 2020-12-06 10:22:51             🧑  作者: Mango


本章可让您了解对量角器功能至关重要的各种核心API。

量角器API的重要性

量角器为我们提供了各种各样的API,这些API非常重要,以便执行以下操作来获取网站的当前状态-

  • 获取我们将要测试的网页的DOM元素。
  • 与DOM元素进行交互。
  • 向他们分配动作。
  • 与他们共享信息。

要执行上述任务,了解量角器API非常重要。

各种量角器API

众所周知,量角器是Selenium-WebDriver的包装,后者是Node.js的WebDriver绑定。量角器具有以下API-

浏览器

它是WebDriver实例的包装,用于处理浏览器级别的命令,例如导航,页面范围的信息等。例如,browser.get方法加载页面。

元件

它用于在我们正在测试的页面上搜索DOM元素并与之交互。为此,它需要一个参数来定位元素。

定位器(按)

它是元素定位器策略的集合。例如,可以通过CSS选择器,ID或与ng-model绑定的任何其他属性来找到元素。

接下来,我们将详细讨论这些API及其功能。

浏览器API

如上所述,它是WebDriver实例的包装,用于处理浏览器级别的命令。它执行以下各种功能-

功能及其说明

ProtractorBrowser API的功能如下-

browser.angularAppRoot

Browser API的此函数为要在其上找到Angular的元素设置CSS选择器。通常,此函数位于“ body”中,但如果我们的ng-app位于页面的小节中,则此功能不可用。它也可能是一个子元素。

browser.waitForAngularEnabled

浏览器API的此函数可以设置为true或false。顾名思义,如果将此函数设置为false,则量角器将不等待Angular $ http和$ timeout任务完成才与浏览器进行交互。我们也可以通过调用waitForAngularEnabled()而不传递值来读取当前状态而无需更改它。

browser.getProcessedConfig

借助此浏览器API函数,我们可以获得当前正在运行的已处理的配置对象,包括规范和功能。

browser.forkNewDriverInstance

顾名思义,此函数将派生另一个浏览器实例,以用于交互式测试。它可以在启用和禁用控制流的情况下运行。下面给出两种情况的示例-

例子1

在启用控制流的情况下运行browser.forkNewDriverInstance()

var fork = browser.forkNewDriverInstance();
fork.get(‘page1’);

例子2

在禁用控制流的情况下运行browser.forkNewDriverInstance()

var fork = await browser.forkNewDriverInstance().ready;
await forked.get(‘page1’);

browser.restart

顾名思义,它将通过关闭浏览器实例并创建新实例来重新启动浏览器。它也可以在启用和禁用控制流的情况下运行。下面给出两种情况的示例-

示例1-在启用控制流的情况下运行browser.restart()

browser.get(‘page1’);
browser.restart();
browser.get(‘page2’);

示例2-在禁用控制流的情况下运行browser.forkNewDriverInstance()

await browser.get(‘page1’);
await browser.restart();
await browser.get(‘page2’);

browser.restartSync

它类似于browser.restart()函数。唯一的区别是,它直接返回新的浏览器实例,而不是将承诺解析返回到新的浏览器实例。它仅在启用控制流时才能运行。

示例-在启用控制流的情况下运行browser.restartSync()

browser.get(‘page1’);
browser.restartSync();
browser.get(‘page2’);

browser.useAllAngular2AppRoots

顾名思义,它仅与Angular2兼容。在查找元素或等待稳定性时,它将搜索页面上所有可用的角度应用程序。

browser.waitForAngular

此浏览器API函数指示WebDriver等待Angular完成渲染并且没有未完成的$ http或$ timeout调用,然后再继续。

browser.findElement

顾名思义,此浏览器API函数在搜索元素之前等待Angular完成渲染。

browser.isElementPresent

顾名思义,此浏览器API函数将测试元素是否显示在页面上。

browser.addMockModule

每次调用Protractor.get方法时,它将在Angular之前添加要加载的模块。

browser.addMockModule('modName', function() {
   angular.module('modName', []).value('foo', 'bar');
});

browser.clearMockModules

与browser.addMockModule不同,它将清除已注册的模拟模块列表。

browser.removeMockModule

顾名思义,它将删除一个寄存器模拟模块。示例:browser.removeMockModule(’modName’);

browser.getRegisteredMockModules

与browser.clearMockModule相反,它将获取已注册模拟模块的列表。

browser.get

我们可以使用browser.get()将浏览器导航到特定的网址,并在Angular加载之前加载该页面的模拟模块。

browser.get(url);
browser.get('http://localhost:3000'); 
// This will navigate to the localhost:3000 and will load mock module if needed

浏览器刷新

顾名思义,这将重新加载当前页面并在Angular之前加载模拟模块。

browser.navigate

顾名思义,它用于将导航方法混回到导航对象中,以便像以前一样调用它们。示例:driver.navigate()。refresh()。

browser.setLocation

它用于使用页内导航浏览到另一个页面。

browser.get('url/ABC');
browser.setLocation('DEF');
expect(browser.getCurrentUrl())
   .toBe('url/DEF');

它将从ABC导航到DEF页面。

browser.debugger

顾名思义,它必须与量角器调试一起使用。此函数基本上向控制流添加了一个任务,以暂停测试并将助手功能注入浏览器,以便可以在浏览器控制台中进行调试。

浏览器暂停

它用于调试WebDriver测试。我们可以在测试中使用browser.pause()从控制流中的那一点进入量角器调试器。

element(by.id('foo')).click();
browser.pause();
// Execution will stop before the next click action.
element(by.id('bar')).click();

browser.controlFlowEnabled

它用于确定是否启用控制流。