使用 Cypress 處理子視窗


有時,點選連結或按鈕會開啟另一個視窗,通常稱為子視窗。Cypress 處理子視窗的方式與 Selenium 和 Protractor 等其他自動化工具不同。它基本上透過將焦點從父視窗轉移到子視窗來忽略子視窗的資訊。

現在讓我們瞭解為什麼連結或按鈕會在不同的選項卡上開啟一個新網頁,這被認為是子視窗。這是因為該元素的 html 中設定了 **target** 屬性。如果省略,它將在同一視窗中開啟。

Cypress 無法直接處理子視窗,它提供了一種變通方法,以便我們可以在父視窗本身繼續執行任務。首先,獲取 html 程式碼中的 **href** 屬性。這是藉助 JQuery 方法 **prop()** 完成的[這將給出作為引數傳遞給該方法的屬性的值]。

現在,獲得 href 屬性的值後,我們可以使用 Cypress 中的 **visit()** 命令啟動 url。但是,只有當另一個應用程式與原始應用程式具有相同的域名時(接受兩個應用程式的不同子域名),測試才能成功。

如果我們使用 visit() 命令在同一視窗中訪問另一個應用程式,Cypress 會將其視為安全威脅。因此,我們一次不能處理多個域名。

示例

處理子視窗的程式碼實現。

describe('Tutorialspoint Test', function () {
   // test case
   it('Test Case6', function (){
      // launch the application
      cy.visit("https://#/signup");
      // grab the href prop with prop() JQuery method
      cy.get(':nth-child(1) > a').then(function(l){
         const txt = l.prop('href');
         // get the url in logs
         cy.log(txt);
         // launch the url again
         cy.visit(txt);
      })
   });
});

測試執行程式日誌如下所示:


更新於:2020年8月5日

2K+ 瀏覽量

開啟您的 職業生涯

完成課程獲得認證

開始學習
廣告