【问题标题】:returned string from input.getAttribute('value') is missing a character从 input.getAttribute('value') 返回的字符串缺少一个字符
【发布时间】:2015-03-30 09:53:49
【问题描述】:

我正在为 Angular 应用程序开发 e2e 测试,但我遇到了问题。我正在使用 .getAttribute('value') 方法从 中检索值,但它缺少一个字符。我检查了包含该值的元素的 HTML 属性,它正确显示了它。我已经在应用程序中手动追溯了这些步骤,并且它也正确显示。这对我来说似乎很不合逻辑,但也许有人有过这个问题的经验。提前致谢。

HTML 代码:

<input class="form-control ng-pristine ng-untouched ng-valid" ng-model="schedule.cronValue" id="cronValue" disabled="disabled">

获取元素值的量角器代码:

//fill our CRON variable with the generated CRON value
        element(by.id('cronValue')).getAttribute('value').then(function(attr){
            CRON = attr;
        });

预期的输出是我的数据库中的值。 CRON 值是从输入类型文本中检索的。 需要的情况截图:http://imgur.com/Co4mGyL

Console.log 输出:

Expected value:0 0 0 1/1 * ? *
CRON:0 0 0 1/ * ? *

如您所见,它在“/”之后缺少一个“1”。

【问题讨论】:

    标签: html angularjs protractor end-to-end


    【解决方案1】:

    如果不能重现问题,很难说,但我会尝试使用evaluate() 并“评估”模型的价值:

    element(by.id('cronValue')).evaluate('schedule.cronValue').then(function(value) {
        CRON = value;
    });
    

    如果 CRON 值仍然具有相同的错误值 - 那么,至少,您会知道该值确实是在模型上设置的,并且它可能原样来自数据库。

    【讨论】:

    • 实施您的答案时,问题似乎仍然存在。 CRON 的输出现在为空,这是否表明应用程序本身存在问题?
    • @TomNijs 感谢您尝试这个。您能否也检查一下id="cronValue" 是否还有其他元素?
    • id="cronValue" 只出现一次,我刚查过。
    • @TomNijs 谢谢,另一个奇怪的快速检查 - 您可以在尝试获取输入值之前添加 browser.sleep(3000) 并查看它是否有任何区别?谢谢。
    • browser.sleep(3000) 使问题浮出水面。我正在清除 cron 生成器中的文本字段,然后执行 .sendKeys,然后检索输出。看来 cron 值在单击保存按钮之前不会更新,这没有足够的时间来存储我想的新值。
    猜你喜欢
    • 2020-12-13
    • 2021-04-17
    • 1970-01-01
    • 1970-01-01
    • 2012-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多