我在第三天與量角器一起工作,並且我經常觸碰金磚四壁,等待頁面加載和元素出現。特別是這個測試案例變得越來越醜陋,我想解決這些問題,而不必依賴睡眠。等待元素更改其值(文本)
我目前「AngularJS的土地之外」
it('it should reflect in both the field and the title when the personnel name is changed', function() {
var inputField, personnelHeader, personnelName;
personnelName = element(By.css(".overlay.editnameoverlay")).click();
personnelHeader = element(By.id("personnel_name_header"));
inputField = element(By.css("input[name='newvalue']"));
inputField.clear();
inputField.sendKeys("Test 123");
element(By.css("input[name='ok_button']")).click();
// browser.driver.sleep(2000); This test only works with this sleep added
browser.wait(function() {
console.log("Waiting for header to change...");
return personnelHeader.getText().then(function(text) {
return text === "Test 123";
});
}, 5000);
return expect(personnelHeader.getText()).toBe(personnelName.getText());
});
所以測試在這裏輸入字段更名。提交它並等待更改反映在模態的標題中。問題是,如果沒有browser.driver.sleep(2000年)我得到一個錯誤說
Stacktrace:
StaleElementReferenceError: stale element reference: element is not attached to the page document
我如何去在這種特殊情況下解決這個?