使用声明元素的文本

时间:2018-11-19 16:02:24

标签: mocha chai cypress

我需要检查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

我不确定我要去哪里错! :(

感谢您的帮助

4 个答案:

答案 0 :(得分:2)

您可以使用赛普拉斯的.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')

答案 1 :(得分:1)

基于Maccurt的断言(它为Cypress日志中打印的断言信息提供了更多上下文)和Hiram的replace函数,我组成了该断言。

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

在我的情况下效果很好。这是断言结果的屏幕截图: enter image description here

答案 2 :(得分:0)

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

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

有时您必须删除尾随空格

答案 3 :(得分:0)

这似乎与Replacing "&nbsp" from javascript dom text node类似。

请尝试使用此命令链

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('satisfy', (text) => text.replace(/\u00a0/g, ' ') === charge);