javascript – 等待元素更改其值(文本)

前端之家收集整理的这篇文章主要介绍了javascript – 等待元素更改其值(文本)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在第三天和Protractor一起工作时,我经常会在等待页面加载和元素出现方面碰到金砖墙.特别是这个测试案例变得丑陋,我想解决问题而不必依赖睡眠.

我目前“在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

在这种特殊情况下,我该如何解决这个问题?

解决方法

Expect Conditions的文档:
var EC = protractor.ExpectedConditions;
// Waits for the element with id 'abc' to contain the text 'foo'.
browser.wait(EC.textToBePresentInElement($('#abc'),'foo'),5000);

猜你在找的JavaScript相关文章