2016-01-19 69 views
1

我無法修整量角器中的結果然後傳遞到數組中。問題中的字段包含一個將形成JSON對象的字符串。修剪不是量角器中的函數

我傳入字段element(by.id(fieldName2)).sendKeys('{"Name":"JoeNew"}');

然後將它推入browser.params.newValues.push(element(by.id(fieldName2)).getAttribute('value'));的數組中。導致// {"Name":"JoeNew"}被存儲在數組中。

我再重新加載頁面,並檢查該字段的內容確實是我想要的東西來存儲,但由於它是JSONified它會回來爲:

{ 
    "Name":"JoeNew" 
} 

要比較兩個我需要trim(),以便爲了比較而回到{"Name":"JoeNew"}

browser.params.updatedValues.push(trimResult(element(by.id(fieldName2)).getAttribute('value'))); 

function trimResult(toTrim) { 
    return toTrim = toTrim.trim(); 
}; 

可悲地返回Failed: toTrim.trim is not a function。然而,我可以執行類似的任務,像Date.parse(date)等其他字段類型沒有問題。

任何人都可以幫忙嗎?

編輯:

的承諾,決心在兩個陣列具有以下比較:在量角器

​​

回答

2

getAttribute()功能承諾的形式返回值,所以爲了使用trim(),您應該首先獲取值,然後執行操作。下面是如何 -

browser.params.updatedValues.push(trimResult(element(by.id(fieldName2)).getAttribute('value'))); 

function trimResult(toTrim) { 
    return toTrim.then(function(val){ 
     return val.trim(); 
    }); 
}; 

編輯:要返回然而push()功能並不能trimResult()功能等的承諾。下面是關於如何推動值的樣本 -

element(by.id(fieldName2)).getAttribute('value').then(function(val){ 
    browser.params.updatedValues.push(val.trim()); 
}); 

OR

trimResult(element(by.id(fieldName2)).getAttribute('value')); 

function trimResult(toTrim) { 
    toTrim.then(function(val){ 
     browser.params.updatedValues.push(val.trim()); 
    }); 
}; 

希望它能幫助。

+0

Thanks @ girish-sortur。這已經刪除了Trim不被允許的量角器錯誤,但它實際上並沒有修剪結果,仍然以擴展的形式記錄它。 –

+0

感謝@DanHodson指出了這一點。這是因爲push不會等待函數'trimResult()'返回promise形式的值。包含它的更新答案。 –

+0

Hi @ girish-sortur感謝您的編輯。我試圖應用這兩個選項。第一種不使用修剪功能,第二種不實際推入數組。我還應該解釋,當我試圖比較兩個數組時,我解決了承諾。我現在編輯了我的原始問題以反映這一點。再次感謝您抽出寶貴時間:) –