Cypress - invoke() 方法详解

invoke() 方法为我们提供了一种与元素属性或方法进行交互的途径,而这些属性或方法通常无法直接通过标准的 Cypress 命令访问。例如,我们可以使用它来获取属性的值,调用像 textContent 或 val() 这样的方法,甚至触发在 DOM 元素上下文中定义的函数。

invoke() 方法的使用

当我们想要执行诸如检索元素的文本、属性或其他属性,或者调用元素上的方法等操作时,Cypress 中的 invoke() 方法就派上用场了。

语法

cy.get(selector).invoke(functionName, ...args)
  • functionName:我们要在选定元素上调用的函数或属性的名称。
  • …args:传递给被调用函数的可选参数。

invoke() 方法示例

示例 1:检索文本内容

在这个例子中,我们将使用 invoke() 来检索元素的文本内容。

HTML 文件: 将此 HTML 文件保存在本地服务器目录中(例如 localhost:3000):

HTML


CODEBLOCK_32acbca2

Cypress 测试文件: 将此文件保存在 Cypress 项目的 cypress/e2e(适用于 Cypress v10 及以上版本)或 cypress/integration(适用于旧版本)文件夹中:

JavaScript


CODEBLOCK_ad7636a9

解释:

  • 访问页面: 使用 cy.visit() 导航到 HTML 页面。
  • 调用 text 属性: 使用 cy.get(‘#message‘).invoke(‘text‘) 来检索段落的文本内容。
  • 断言文本内容: 使用 .should(‘equal‘, ‘Hello, Cypress!‘) 验证文本内容是否等于 "Hello, Cypress!"。

输出:

!outputOutput

示例 2:检索和设置元素属性

在这个例子中,我们将使用 invoke() 来获取和设置元素上的属性。

HTML 文件: 将此 HTML 文件保存在本地服务器目录中(例如 localhost:3000):

HTML


CODEBLOCK_f2cc58cc

Cypress 测试文件: 将此文件保存在 Cypress 项目的 cypress/e2e(适用于 Cypress v10 及以上版本)或 cypress/integration(适用于旧版本)文件夹中:

JavaScript


CODEBLOCK_29f29e10

解释:

  • 访问页面: 使用 cy.visit() 导航到 HTML 页面。
  • 点击按钮: 使用 cy.get(‘#changeLogo‘).click() 模拟点击以更改图片来源。
  • 调用 attr 属性: 使用 cy.get(‘#logo‘).invoke(‘attr‘, ‘src‘) 来检索图片的 src 属性。
  • 断言属性值: 使用 .should(‘equal‘, ‘new-logo.png‘) 验证 src 属性是否已更新为 new-logo.png。

#### 输出:

!outputOutput

结论

Cypress 中的 invoke() 方法是一个强大的工具,用于访问和操作超出标准命令范围的 DOM 元素。无论我们需要检索文本、

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。如需转载,请注明文章出处豆丁博客和来源网址。https://shluqu.cn/53865.html
点赞
0.00 平均评分 (0% 分数) - 0