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'); }); });