【问题标题】:Get a text in the span, using protractor使用量角器获取跨度中的文本
【发布时间】:2016-08-01 12:57:21
【问题描述】:

我需要使用 expect 和 Jasmine 检查按钮中 span 的文本是否为“Vigente”。我该怎么做?

<button _ngcontent-hke-28="" class="btn btn-success disabled" tabindex="-1">
<span _ngcontent-hke-28="" class="glyphicon glyphicon-check">
</span> Vigente</button>

我可以像这样使用 xpath:

/html/body/application/auth-container/layout/div/main-content/div/norma-cadastro/div/form/div[8]/div/button/text(Vigente)

【问题讨论】:

    标签: javascript angularjs jasmine protractor


    【解决方案1】:

    首先,您询问的 XPath 表达式不正确 - 不需要括号内的 Vigente 部分。此外,尽量不要使用绝对 XPath 表达式,因为路径中的级别越多,中断的可能性就越大。还有,XPaths are not recommended by the Protractor team

    相反,我会找到元素by partial button text 并检查该元素是否存在:

    expect(element(by.partialButtonText("Vigente")).isPresent()).toBe(true);
    

    或者,您可以通过 CSS 选择器来定位元素并获取文本:

    expect($("button.btn-success").getText()).toContain(Vigente);
    

    button.btn-success CSS 选择器虽然相当广泛,但看看你是否可以改进它。

    【讨论】:

    • 如果我有一个带有文本“Vigência invalida”的按钮。我正在尝试使用expect(element(by.partialButtonText(" Vigência invalida")).isPresent()).toBe(true);,但它不起作用
    • @paulotarcio 好的,您确定需要前导空格吗?谢谢。
    • 我试过没有前导空间和有后缀空间,都没有工作
    • @paulotarcio 此按钮在页面上的表示方式可能不同。你能展示它的html表示吗?谢谢。
    • @alexcxe 我不知道如何缩进它。但有它:我有两个输入日期,如果我输入最终日期>初始日期,按钮必须更改为“vigência invalida”
    【解决方案2】:

    不能说它是否正确。但你可以在 Chrome 开发工具中自己检查。只需检查元素上的元素。然后右键单击 HTML 中的元素并单击复制。如果可以的话,我建议使用 ID 或角度模型。 XPath 会随着 HTML 的变化而变化(除非您在 XPath 中使用 ID),然后维护测试成为一项任务。

    看图。

    【讨论】:

    • 我不能使用model或id,因为开发者没有使用它的习惯。这就是我使用 xpath 的原因
    猜你喜欢
    • 1970-01-01
    • 2020-04-23
    • 1970-01-01
    • 2013-01-13
    • 1970-01-01
    • 2017-09-27
    • 1970-01-01
    • 2019-03-09
    相关资源
    最近更新 更多