Я нахожусь на своем третьем дне, работая с Транспортером, и я постоянно сталкиваюсь с стенами Брис, ожидая, когда страницы загрузятся и появятся элементы. Этот тестовый пример, в частности, стал уродливым, и я хотел бы решить проблемы, не полагаясь на сон.Подождите, пока элемент изменит свое значение (текст)
Я в настоящее время «вне земли 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
Как я могу идти о решении этого в данном конкретном случае?