我正在使用Selenium和JavaScript編寫測試。我對這兩者都是新手,也是功能編程和承諾的新手。我試圖創建一個需要做三件事情的函數:如何從最後的承諾中返回一個函數中的承諾「then」
- 點擊輸入
- 清除輸入
- 的SendKeys輸入
我目前的功能不工作:
var clearAndSendKeys = function(driver, elementIdentifier, sendKeys) {
var returnValue;
driver.findElement(elementIdentifier).then(function(inputField){
inputField.click().then(function() {
inputField.clear().then(function() {
returnValue = inputField.sendKeys(sendKeys);
});
});
});
return returnValue;
}
然後該函數將被稱爲例如:
clearAndSendKeys(driver, webdriver.By.id('date_field'), '14.09.2015').then(function(){
//Do stuff
});
我期望變量returnValue
包含來自sendKeys
的承諾。但是,在運行sendKeys之前,函數clearAndSendKeys
會返回未定義的變量。我認爲這是因爲returnValue
從未被定義爲承諾,所以程序不知道它需要等待sendKeys
。
如何讓我的功能clearAndSendKeys
從sendKeys
返回承諾?我寧願避免爲clearAndSendKeys
函數添加回調。
編輯:從代碼中刪除.then({return data})
,因爲這是一個錯字。
你需要的returnValue分配給承諾,第一條線應該是'VAR的returnValue = driver.findElement(...', – Saar
http://jsfiddle.net/arunpjohny/s2b0v8nu/1/ - 使用回調 –
嗨阿倫,爲什麼他應該使用回調時試圖使用諾言? – Saar