【问题标题】:How to get the text from an element which disappears quickly using protractor如何从使用量角器快速消失的元素中获取文本
【发布时间】:2017-10-09 18:51:21
【问题描述】:

我需要从元素 P 中获取文本,但量角器一直返回错误

代码:

<div class = "ui-growl-message"> 
    <span class = "ui-growl- title">Sucesso</span> 
    <p>cargo Cadastrado cm sucesso!</p>  
</div>

我试过这种方式:

const msgValidacao = element(by.css('ui-growl-message')).all(by.tagName('p')).first().getText().then(() => {
    expect(msgValidacao).toContain('Cargo cadastrado com sucesso');
});

错误是:

失败:使用定位器找不到元素:By(css 选择器, ui-grow-message)

问题是元素是一个警告,所以它很快从屏幕上消失了。

【问题讨论】:

  • 您的 css-class 语法错误。应该是element.all(by.css('div.ui-growl-message p')) 标签没有前缀,类有前缀. 似乎你没有研究如何选择元素。这个问题很基础。
  • 感谢您的帮助。对不起,我是量角器的新手,英语不是我的第一语言,所以这使得研究变得更加困难。 =)
  • 别担心。英语很少是任何 IT 工作人员的第一语言。
  • Here you find an introduction video for CSS locators in protractor。还可以查看这个人的其他视频,因为他对 Protractor 做了很好的介绍。关于时间问题,了解ExpectedConditionsPromises。一般来说,任何有关 JavaScript 的知识,CSSAngular 包括 Protractor 都会有很大帮助。
  • 非常感谢,这个视频对我有很大帮助。

标签: selenium selenium-webdriver jasmine protractor automated-tests


【解决方案1】:

除了 css 更正之外,您还需要采用某种等待策略来预测消息并尽可能接近初始渲染的时刻抓取内容。由于复杂的时间因素,围绕非常短暂的消息进行自动化可能具有挑战性。

【讨论】:

  • 没有太多的上下文来确定元素是真的消失了还是只是变得不可见。此外,Protractor 和 Default 超时是否应该自动处理这种简单的计时问题。它只会变得更难,如果消息,即在一段时间后随机出现而不是一个动作或在加载中出现。
【解决方案2】:

它返回未找到该元素的原因可能不是真正的问题。我觉得选择器不好。如果元素像您所说的那样迅速消失,有时测试会通过,有时会失败。尝试另一个选择器并确保您拥有正确的选择器。

如果要选择第一个元素,请使用 get(0) 而不是 first()

element(by.css('ui-growl-message')).all(by.tagName('p')).get(0)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-16
    • 2020-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多