量角器-检查输入字段是否有文本

Protractor - Checking if input field has text

本文关键字:是否 文本 字段 输入 检查 量角器      更新时间:2023-09-26

我正在编写一个简单的量角器测试,用于检查单击按钮后某个输入标记是否包含文本。我已经尝试了一些事情,我目前正在尝试使用量角器。ExpectedConditions检查它是否包含任何文本。下面是我的代码:

it("should click submit", function() {
    var EC = protractor.ExpectedConditions;
    var status = element(by.id('status'));
    $("#btnSubmitQuery").click();
    var condition = EC.textToBePresentInElement(status, 'C');
    browser.wait(condition, 8000, "Text is still not present");
    status.getText().then(function (text) {
        console.log(text);
    });
});

一旦单击btnSubmitQuery,就会对服务器进行REST调用,但问题是我永远无法获得状态的任何值。当我运行这段代码时发生的事情是,浏览器只等待8秒然后关闭,即使我可以看到元素中的文本。控制台不会记录任何内容。什么好主意吗?

编辑:我正在检查的html元素看起来像这样:

<td><input id="status" type="text" class="form-control" placeholder="PaxStatus ..." value="{{paxInformation.status}}"ng-readonly="true"></td>

只是为了改进@maurycy的答案。对于这种特殊情况,有一个内置的预期条件:

var EC = protractor.ExpectedConditions;
browser.wait(EC.textToBePresentInElementValue(status, 'C'), 5000)

不应该更像这样吗:

condition = function () {
  return status.getAttribute('value').then(function (value) {
    return value.length > 0
  })
};
browser.wait(condition, 8000, "Text is still not present").then(function () {
  status.getAttribute('value').then(function (text) {
    console.log(text);
  })
});

我用这个

var EC = protractor.ExpectedConditions;
var txt = browser.wait(EC.textToBePresentInElementValue(status, 'C'), 5000)
return browser.wait(txt, 5000).catch(() => { 
throw new Error('Text is still not presentt');});