Cypress 中的 get 和 find 命令


Cypress 具有 get() 和 find() 方法,用于根据页面上的定位器查找元素。这两种方法实现的目标几乎相同。get() 方法借助指定为该方法参数的 css 定位器获取一个或一组 Web 元素。

语法

cy.get(selector, args)

get() 方法的第二个参数是可选的。它可以有以下三种类型的参数:

  • log - log 参数的默认值为 true。这决定了是否会在控制台上记录命令。

cy.get('.product', { log: false });
  • withinSubject - withinSubject 参数的默认值为 null。这决定了应该从页面上的哪个位置搜索元素。如果省略,则从元素根开始。

cy.get('.p',{ withinSubject : document.getElementById('#id')};
  • timeout - timeout 参数的默认值为 defaultCommandTimeout(4000 毫秒)。这决定了在抛出错误之前获取元素的等待时间。

cy.get('.p',{ timeout: 5000 });

我们可以从 get() 方法获取元素列表。在元素列表或数组中,我们必须借助 eq() 方法选择其中一个。eq() 方法从索引 0 开始获取特定索引处的 DOM 元素。

cy.get('.p') .eq(2).should('contain', 'Tutorialspoint');

find() 方法获取与作为参数传递的选择器匹配的一个或多个元素。get() 和 find() 方法的区别在于,find() 方法需要与其他方法(如 get())链接使用。它不能独立与 cy 对象一起使用。

语法

.find(selector, args)

find() 方法的第二个参数是可选的。它可以有以下两种类型的参数:

  • log - log 参数的默认值为 true。这决定了是否会在控制台上记录命令。

cy.get('#parent').find('img', { log: false });
  • timeout - timeout 参数的默认值为 defaultCommandTimeout(4000 毫秒)。这决定了在抛出错误之前获取元素的等待时间。

cy.get('#parent').find('img', timeout: 5000 });

find() 命令有助于定位嵌套在另一个元素中的元素,或者大多数情况下,如果它们具有父子关系。find() 方法有助于以更快速有效的方式定位元素。

示例

使用 get 和 find 方法的代码实现。

// test suite
describe('Tutorialspoint Test', function () {
   // test case
   it('Test Case1', function (){
      // test step to launch a URL
      cy.visit("https://tutorialspoint.com/index.htm");
      // enter test in the edit box
      // assertion to validate the number of child elements
      cy.get('#gs_50d > tbody > tr > td'). should('have.length',2);
      // locate element with get and find method
      cy.get('#gs_50d > tbody > tr > td'). find('input')
      //enter test in the edit box
      .type('Cypress');
   });
});

更新于: 2020年8月5日

2K+ 浏览量

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告