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.tw/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+ 瀏覽量

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.