WebdriverIO - 断言的预期声明


要将 WebdriverIO 用作自动化测试工具,我们需要检查点来帮助我们判断测试是否通过或失败。WebdriverIO 中有各种可用的断言,我们可以使用它们来验证测试是否已成功验证某个步骤。

在断言中,我们可以将测试的预期结果与实际结果进行比较。如果两者相似,则测试应该通过,否则测试应该失败。WebdriverIO 中的expect 语句可以应用于浏览器、模拟对象或元素。

我们必须添加一个名为 Chai 的 NodeJS 库。Chai 库包含用于断言的期望语句。

我们必须在代码中添加以下语句来实现 Chai 断言 -

const e = require('chai').expect

应用于浏览器的断言

这些断言如下:

获取网址

它检查浏览器是否打开了特定页面。语法如下 -

expect(browser).toHaveUrl('https://www.tutorialspoint.com/index.htm')

包含 URL

它检查页面的 URL 是否具有特定值。

句法

语法如下 -

expect(browser).toHaveUrlContaining('tutorialspoint')

获取网址

它检查页面是否具有特定标题。

句法

语法如下 -

expect(browser).toHaveTitle('Terms of Use - Tutorialspoint')

应用于元素的断言

这些断言如下:

待显示

它检查元素是否显示。

句法

语法如下 -

const e = $('#loc')
expect(e).toBeDisplayed()

存在

它检查元素是否存在。

句法

语法如下 -

const e = $('#loc')
expect(e).toExist()

在场

它检查元素是否存在。

句法

语法如下 -

const e = $('#loc')
expect(e).toBePresent()

存在

它类似于 toExist。

专注

它检查元素是否获得焦点。

句法

语法如下 -

const e = $('#loc')
expect(e).toBeFocussed()

具有属性

它检查元素属性是否具有特定值。

句法

语法如下 -

const e = $('#loc')
expect(e).toHaveAttribute('name', 'search')

具有属性

它类似于 toExist。

包含属性

它检查元素属性是否包含特定值。

句法

语法如下 -

const e = $('#loc')
expect(e).toHaveAttributeContaining('name', 'srch')

拥有元素类

它检查元素是否具有特定的类名。

句法

语法如下 -

const e = $('#loc')
expect(e).toHaveElementClass('name', { message: 'Not available!', })

toHaveElementClassContaining 包含元素类

它检查元素类名称是否包含特定值。

句法

语法如下 -

const e = $('#loc')
expect(e).toHaveElementClassContaining('nam')

拥有元素属性

它检查元素是否具有特定属性。

句法

语法如下 -

const e = $('#loc')
expect(e).toHaveElementProperty('width', 15)
//verify negative scenario
expect(e).not.toHaveElementProperty('width', 20)

具有价值

它检查输入元素是否具有特定值。

句法

语法如下 -

const e = $('#loc')
expect(e).toHaveValue('Selenium', { ignoreCase: false})

具有价值

它检查输入元素是否包含特定值

句法

语法如下 -

const e = $('#loc')
expect(e).toHaveValueContaining('srch')

可点击

它检查元素是否可点击。

句法

语法如下 -

const e = $('#loc')
expect(e).toBeClickable()

成为残疾人

它检查元素是否被禁用。

句法

语法如下 -

const e = $('#loc')
expect(e).toBeDisabled()
//verify negative scenario
expect(e).not.toBeEnabled()

待启用

它检查某个元素是否已启用。

句法

语法如下 -

const e = $('#loc')
expect(e).toBeEnabled()

待选

它与 toBeEnabled 相同。

被检查

它与 toBeEnabled 相同。

获得参考

它检查链接元素是否具有特定的链接目标。

句法

语法如下 -

const e = $('<a>')
expect(e).toHaveHref('https://www.tutorialspoint.com/index.htm')

具有链接

它与 toHaveHref 相同。

toHref包含

它检查链接元素是否包含特定链接目标。

句法

语法如下 -

const e = $('<a>')
expect(e).toHaveHrefContaining('tutorialspoint.com')

包含链接

它与 HaveHrefContaining 相同。

拥有ID

它检查元素是否具有特定的 id 属性值。

句法

语法如下 -

const e = $('#loc')
expect(e).toHaveId('loc')

到有文本

它检查元素是否具有特定文本。

句法

语法如下 -

const e = $('#loc')
expect(e).toHaveText('Learning WebdriverIO')

包含文本

它检查元素是否包含特定文本。

句法

语法如下 -

const e = $('#loc')
expect(e).toHaveTextContaining('Learning WebdriverIO')

显示在视点中

它检查元素是否在视点内。

句法

语法如下 -

const e = $('#loc')
expect(e).toBeDisplayedInViewpoint()

应用于模拟对象的断言

下面列出了断言 -

待请求

它检查是否调用了模拟。

句法

语法如下 -

const m = browser.mock('**/api/list*')
expect(m).toBeRequested()

待请求时间

它检查模拟是否被调用了预期的次数。

句法

语法如下 -

const m = browser.mock('**/api/list*')
expect(m).toBeRequestedTimes(2)

首先,按照标题为“使用 webdriverIO 的快乐路径流”一章中的步骤 1 到 5 进行操作,如下所示 -

步骤 1 - 安装 NodeJS。有关如何执行此安装的详细信息,请参阅标题为 NodeJS 入门的章节。

步骤 2 - 安装 NPM。有关如何执行此安装的详细信息,请参阅标题为“NPM 安装”的章节。

步骤 3 - 安装 VS Code。有关如何执行此安装的详细信息,请参阅标题为 VS Code 安装的章节。

步骤 4 - 创建配置文件。有关如何执行此安装的详细信息,请参阅标题为“配置文件生成”的章节。

步骤 5 - 创建规格文件。有关如何执行此安装的详细信息,请参阅标题为“Mocha 安装”的章节。

步骤 6 - 在创建的 Mocha 规范文件中添加以下代码。

// test suite name
describe('Tutorialspoint application', function(){
   //test case
   it('Assertion with expect', function(){    
      // launch url
      browser.url('https://www.tutorialspoint.com/about/about_careers.htm')
      //identify element with link text then click
      $("=Terms of Use").click()
      browser.pause(1000)
      //verify page title with assertion
      expect(browser).toHaveTitleContaining('Terms of Use - Tuter')
   });
});

使用以下命令运行配置文件 - wdio.conf.js 文件 -

npx wdio run wdio.conf.js

有关如何创建配置文件的详细信息将在标题为 Wdio.conf.js 文件的章节和标题为配置文件生成的章节中详细讨论。

您的计算机上将出现以下屏幕 -

应用断言

命令执行成功后,我们发现结果为1失败。由于预期:是使用条款 - Tuter,而收到的:输出是使用条款 - Tutorialspoint。

此外,WebdriverIO Expect 语句突出显示了 Expected: 和 Received: 文本不匹配的文本部分。