2015-11-10 36 views
1

我正在使用the Intern進行功能測試。一個這樣的試驗需要被記錄到一個管理員帳戶:在使用Intern/LeadFoot/Selenium的功能測試中隱藏密碼

registerSuite({ 
    name: 'login', 

    'login': function() { 
     return this.remote 
      .get(URL) 
      .findById('username') 
       .click() 
       .pressKeys(USER.ADMIN.USERNAME) 
       .end() 
      .findById('password') 
       .click() 
       .pressKeys(USER.ADMIN.PASSWORD) 
       .pressKeys('\n') 
       .end() 
      .findByCssSelector('.login-welcome') 
       .getVisibleText() 
      .then(function(text) { 
       assert.strictEqual(text, USER.ADMIN.NAME, 'User should now be logged in'); 
      }); 
    } 
}); 

現在的問題是,這個口令傳遞爲純文本。這被顯示在BrowserStack:

00:19 | 0 | Send a sequence of key strokes to the active element. | password 

這是對SauceLabs相同:

COMMAND: POST keys 
PARAMETERS: {"value":["password"]} 

問題在於一個事實,即訪問這些測試並不限制 - 這些測試需要由其他部門的人員查看。

即使沒有,上關的機會,密碼測試賬號被泄露,我不想攻擊者突然得到一切的管理員權限。

有沒有什麼辦法讓這個如圖中的命令明文存儲密碼/?

我的團隊目前正在運行一個單獨的腳本來激活/停用這些帳戶,這樣他們只能在運行功能測試時工作,但我想看看是否有人提出了更好的解決方案。

回答

2

沒有隱瞞被髮送到遠程瀏覽器的按鍵,也沒有從測試框架日誌排除它們內置的方式。從測試框架的角度來看,它們只是擊鍵,而不是密碼。

當然,處理這種情況的理想方式是使用目標應用程序的測試部署,這將是更安全,以便進行測試更多的控制。假設是不可能的,但...

用於獲取密碼進入而不會被記錄的瀏覽器

一種可能性是讓瀏覽器通過注入腳本標記將在填寫密碼加載腳本。基本上,你會有一個外部腳本來找到密碼字段並輸入值。在功能測試中,你需要的腳本標記注入到瀏覽器中,然後等待它加載,這樣的:

return this.remote 
    .get(URL) 
    .findById('username') 
     .click() 
     .pressKeys(USER.ADMIN.USERNAME) 
     .end() 
    .executeAsync(function (done) { 
     window._intern_done = done; 
     var script = document.createElement('script'); 
     script.src = '/path/to/password_script.js'; 
     document.head.appendChild(script); 
    }) 
    .findByCssSelector('.login-welcome') 
    // continue testing 

腳本本身可能看起來像:

(function() { 
    // set the password 
    var passwordField = document.getElementById('password'); 
    passwordField.value = 'secret password'; 
    // clean up the _intern_done global we set in the executeAsync block 
    var done = window._intern_done; 
    delete window._intern_done; 
    // let Intern know we're done 
    done(); 
})(); 
+0

這看起來有希望。有沒有辦法從本地機器加載腳本? I.E. 'script.src ='http://localhost/path/to/password_script.js';'。 – jperezov