7

無法理解爲什麼它返回一個對象不是文本的價值,一些測試代碼:量角器返回一個對象,但預期 - element.getText()的值

describe('columns swap', function() { 

    describe('location column ', function() { 
     it('should swap right', function() { 
      browser.sleep(10000); 
      var fColumn = element(by.xpath('(//*[@class="k-link"])[2]')).getText(); 
      console.log(fColumn); 

控制檯輸出:

> columns swap 
>  location column { ptor_: { controlFlow: [Function], 
>  schedule: [Function], 
>  getSession: [Function], 
>  getCapabilities: [Function], 
>  quit: [Function], 
>  actions: [Function], 
>  executeScript: [Function], 
>  executeAsyncScript: [Function], 
>  call: [Function], 
>  wait: [Function], 
>  sleep: [Function], 
>  getWindowHandle: [Function], 
>  getAllWindowHandles: [Function], 
>  getPageSource: [Function], 
>  close: [Function], 
>  getCurrentUrl: [Function], ... 

另外,如果我用這個部分與期待():

expect(columnSorting.acpColumn.getText()).to.eventually.equal(fColumn); 

我看到:

1) columns swap location column should swap right: 
    AssertionError: expected 'Location' to equal { Object (ptor_, parentElement 
ArrayFinder, ...) } 

所以,由於某種原因,我可以從文本期待它正確的 - 「位置」

什麼即時做錯了什麼?

回答

12

getText()返回承諾。如果你想記錄的實際值,你需要解決它:

element(by.xpath('(//*[@class="k-link"])[2]')).getText().then(function (value) { 
    console.log(value); 

    expect(columnSorting.acpColumn.getText()).to.eventually.equal(value); 
}); 

注意expect()在量角器/ jasminewd「打補丁」,以含蓄解決的承諾。換句話說,你可以斷言getText()等於所需的文本:

expect(element(by.xpath('(//*[@class="k-link"])[2]')).getText()).toEqual('My Text'); 
+0

是的,我知道,我們可以用文本的預期,但功能它不會爲我工作,因爲我們將有不同的語言翻譯。 謝謝你的例子。基本上我需要將這個'value'存儲爲var,並將其用於我的expect()。但我可以理解如何去做 - 我對js的瞭解很少。你能寫一個簡單的例子嗎? – kyxap 2015-03-02 16:04:01

+0

@kyxap我已經更新了包含'then()'函數內部預期調用的答案。這是你想說的嗎?謝謝。 – alecxe 2015-03-02 18:27:31

+0

非常感謝 – kyxap 2015-03-02 19:04:29

相關問題