如何使用Protractor測試元素的id?


我們將學習如何使用Protractor測試元素的ID。Protractor是一個用於Angular和AngularJS應用程式的端到端測試框架。Protractor構建在WebDriverJS之上,WebDriverJS是WebDriver API的JavaScript實現,並支援多種瀏覽器,例如Chrome、Firefox和Safari。它在開發人員和測試人員中很受歡迎,因為它提供了一種簡單有效的方法來測試Angular應用程式,無需編寫複雜的程式碼。

學習如何使用Protractor測試元素的id對於希望確保其Web應用程式正常執行的Web開發人員和質量保證(QA)測試人員非常重要。id屬性是HTML元素的唯一識別符號,它通常用於使用JavaScript或CSS訪問和操作元素。透過測試元素的id,您可以驗證是否正在定位正確的元素,並確保您的應用程式按預期執行。

我們將透過兩個不同的示例來測試元素的id,這將使您對該主題有更清晰的瞭解。

  • 測試只有一個元素時的id

  • 測試存在多個元素時的id

只有一個元素時測試id

假設我們有一個帶有某些id和類名的按鈕。我們可以使用類名找到該按鈕,然後使用Protractor測試該按鈕的id。

語法

使用者可以按照以下語法使用Protractor測試只有一個元素時的元素id。

expect(element(locator).getAttribute('id'))
.toEqual(expectedId);

這裡,“locator”指定元素定位策略(例如by.id、by.css、by.xpath等),expectedId是元素的預期ID值。toEqual()方法用於比較實際和預期的ID值。

示例

在下面的示例中,我們建立了3個檔案——conf.js、test.html和test.js。

我們在conf資料夾中有一個conf.js檔案,tests資料夾包含test.html和test.js。

conf.js

此檔案是Protractor的配置檔案。它將瀏覽器功能設定為Chrome,指定Jasmine框架,並指定測試指令碼檔案的位置。它還設定預設超時間隔和測試的基本URL。onPrepare函式用於設定瀏覽器的重置URL。

exports.config = {
   directConnect: true ,
   
   // Capabilities to be passed to the webdriver instance.
   capabilities: {
      'browserName': 'chrome'
   },

   // Framework to use. Jasmine is recommended.
   framework: 'jasmine',
   /* Spec patterns are relative to the current working directory when protractor is called */
   specs: ['../tests/test.js'],

   // Options to be passed to Jasmine.
   jasmineNodeOpts: {
      defaultTimeoutInterval: 30000
   },
   
   // Define the baseUrl for the file
   baseUrl: "file://" + __dirname + "/",
     
   onPrepare: function () {
      browser.resetUrl = "file://";
   }
};

test.html

此檔案包含一個id為“login-button”且類名為“myButton”的按鈕元素。

<html>
<head>
</head>
<body>
   <h2>Test the id of one button</h2>
   <div id = "login">
      <p> login here </p>
      <button id = "login-button" class = "myButton"> Login </button>
   </div>
</body>
</html>

test.js

此test.js檔案使用Protractor測試網頁上登入按鈕的ID。beforeEach()函式停用AngularJS同步並載入網頁。it()函式驗證登入按鈕的ID是否正確。它首先使用CSS類名查詢按鈕元素,然後使用getAttribute函式檢索按鈕的ID。最後,它使用expect函式將檢索到的ID與預期值(即'login-button')進行比較。

describe('Testing the ID of an Element with Protractor', function() {
   beforeEach(function() {
   
      // Disable AngularJS synchronization 
      browser.waitForAngularEnabled(false) ;
      
      // Load the webpage 
      browser.get('../tests/test.html') ;
   });
     
   it('should verify the ID of the like button', function() {
   
      // Find the element by using the CSS class name
      let loginButton = element(by.css('.myButton') );
      
      // Verify that the ID of the element is correct
      expect(loginButton.getAttribute('id')).toEqual('login-button');
   } );
} );

執行配置檔案的命令

protractor conf.js(file path)

輸出

我們可以看到所有測試都通過了,沒有錯誤。

測試存在多個元素時的id

可能存在多個按鈕具有不同ID的情況。在這種情況下,上述示例中描述的方法將不起作用。因此,我們將根據其索引或位置選擇一個特定的按鈕,然後測試其id。

示例

這是一個使用Protractor測試存在多個按鈕時按鈕id的示例。它是上述示例的一個稍微修改後的版本。

test.html

此HTML頁面包含兩個具有相同類名“myButton”的按鈕。但是它們的ID不同——“dislike-button”和“like-button”。

<html>
<head>
</head>
<body>
   <h2>Test the id when there are more than one button</h2>
   <button id = "dislike-button" class = "myButton" > Dislike </button>
   <button id = "like-button" class = "myButton" > Like </button>
</body>
</html>

test.js

此Protractor測試檔案測試網頁上特定按鈕元素的ID。測試載入我們指定的網頁(包含多個按鈕),然後它使用element.all()和get()函式查詢第二個按鈕元素。然後,它獲取第二個按鈕元素的ID屬性,並使用expect函式驗證它是否與'like-button'匹配。

describe('Testing the ID of an Element with Protractor', function() {
   beforeEach(function() {
      browser.waitForAngularEnabled(false);
            
      // Load the webpage 
      browser.get('../tests/test.html') ;
   });
     
   it('should verify the ID of the like button', function() {
   
      // Find the second button element on the page
      let likeButton = element.all(by.tagName('button')).get(1);

      /* Get the ID attribute of the like button and verify it matches 'like-button' */
      likeButton.getAttribute('id').then(function(value) {
         expect(value).toEqual('like-button');
      } );
   } );
} );

輸出

總之,使用Protractor測試元素的ID對於Web開發人員和質量保證測試人員至關重要。我們已經看到了演示如何測試存在一個或多個元素時元素ID的示例。

更新於:2023年4月6日

172 次瀏覽

啟動你的職業生涯

完成課程獲得認證

開始學習
廣告