2016-04-19 49 views
1

我正在使用Protractor v3.2.2和Node.js v5.10.1在Chrome上運行測試。sendKeys不會等待Angular?

基本上我觀察到的是我們的一個測試連續失敗,因爲表單字段沒有被填充並且表單無法提交。在失敗的步驟有效地看起來是這樣的:

field.sendKeys(value); 
checkbox.click(); 
submitButton.click(); 

如果我將其更改爲:

field.clear().sendKeys(value); 
checkbox.click(); 
submitButton.click(); 

或:

browser.waitForAngular(); 
field.sendKeys(value); 
checkbox.click(); 
submitButton.click(); 

它傳遞順利。

所以我懷疑sendKeys不會等待頁面加載完畢,即使文檔會建議所有WebDriver操作在執行前調用browser.waitForAngular。有沒有人對這個問題有任何想法?這可能是一個錯誤?

回答

0

如果您需要使用sendKeys的有效結果您需要在特定時間內休眠瀏覽器。

在您的代碼之前或之後添加browser.driver.sleep(500);。這將是有效的。

看到這個。

field.sendKeys(value); 
browser.driver.sleep(500); 

checkbox.click(); 
browser.driver.sleep(500); 

submitButton.click(); 
+0

是,在等待將與問題的幫助,這不是處理這種情況下(如果有的話,'browser.wait'將是可取的)。我的問題是不是然而,尋找解決辦法非常優雅的方式(因爲我在問題本身中提到了兩個),而是關於'sendKeys'的行爲是否應該如此(根據文檔,默認情況下所有WebDriver操作都使用'browser.waitForAngular'封裝)。我編輯了我的問題以使其更清楚。 – calendir

0

嘗試寫在承諾,以便它會等待。

field.sendKeys(value).then(function(){ 
    checkbox.click().then(function(){ 
     submitButton.click().then(function(){ 
     expect(thisToShow).toBe(shown); 
    }); 
    }); 
});