使用 &nbsp 断言元素的文本

Asserting text of element with &nbsp

提问人:Venkata 提问时间:11/20/2018 最后编辑:BrendanVenkata 更新时间:12/7/2020 访问量:6358

问:

我需要检查 Div 标签的文本并确保它是否显示正确的文本

下面是 HTML 代码:

HTML Tag

这是我为断言内容而编写的步骤定义

    Given(/^offer summary section should display "([^"]*)" amount against "([^"]*)"$/, (charge, labelText) => {
    const parentElement = cy.get('.c-offer-summary > .c-offer-summary__ledger').children('.c-ledger__section').find('.c-ledger__row-name').contains(labelText).parent();
    parentElement.find('.c-ledger__row-amount').invoke('text').should('eq',charge);
});

但是柏树抛出了一个错误:

Error

我不确定我哪里出了问题!!:(

任何帮助都是值得赞赏的

摩卡.js 柏树

评论


答:

0赞 Maccurt 11/20/2018 #1

我假设您正在尝试测试 .c-ledger__row-amount 是否为“DKK 15.00”。试试这个。

cy.get(".c-ledger__row-amount").invoke('text').then((text) => {
         expect(text.trim()).equal('DKK 15.00');
});

有时您必须删除尾随空格

评论

1赞 Sgnl 4/3/2019
有用的说明,但这并不能解决 OP 的问题,因为附加的 DOM 屏幕截图中没有尾随空格
15赞 Zain 5/15/2019 #2

根据 Maccurt 的断言(它为 Cypress 日志中打印的断言信息提供了更多上下文)和 Hiram 的替换函数,我撰写了这个断言。

cy.get(".c-ledger__row-amount").invoke('text').then((text) => {
    expect(text.replace(/\u00a0/g, ' ')).equal('DKK 15.00');
});

它适用于我的情况。下面是断言结果的屏幕截图:enter image description here

5赞 Jennifer Shehane 12/7/2020 #3

您可以使用 Cypress 的命令来去除空格:.contains()

cy.get('.c-ledger__row-amount').contains('DKK 15.00')

或者,您可以删除空格字符,然后断言:

cy.get('.c-ledger__row-amount')
  .invoke('text')
  .invoke('replace', /\u00a0/g, ' ')
  .should('eq', 'DKK 15.00')