赛普拉斯:如何比较与从表中读出的字符串/文本连接的不同数据类型

Posted

技术标签:

【中文标题】赛普拉斯:如何比较与从表中读出的字符串/文本连接的不同数据类型【英文标题】:Cypress: how to compare diffrent datatypes concatinated with String/ text read out from tables 【发布时间】:2021-12-21 09:53:27 【问题描述】:

我想比较与文本混合的双值 (75.999):75.999 & 编辑

我从表中获取了这些值并尝试将其解析为字符串,以替换除数字之外的所有符号和字符,但没有任何效果。

html-SNIPET:

<td data-cy="project.chanceOrder" class="text-right editableRow" aria-label="project.chanceOrder: NCDd_3wB0UC4Ud30l6iP">
    <div class="ng-star-inserted">
        <span class="ng-star-inserted">75.999&nbsp;%&nbsp;</span>
        <!---->
        <a class="inlineEditLink" title="Bearbeiten">
            <em class="material-icons">edit</em>
        </a>
    </div>
    <!---->
    <!---->
</td>

赛普拉斯代码(不工作):

cy.get('[data-cy="projectList"]')
.find('[data-cy="project.chanceOrder"]')
.each((MyElement, MyIndex, MyContentOfArray) => 
    if(MyIndex == 0)
    
        // NOT WORKING
        expect(parseFloat(MyElement.text().replace(/[^a-zA-Z0-9 ]/g, ""))).to.equal(project.chanceOrder.replace(/[^a-zA-Z0-9 ]/g, ""))

        // NOT WORKING
        // let tmp = MyElement.text().replace(/[^a-zA-Z0-9 ]/g, "")
        // let OriginValueToCompare = '' + project.chanceOrder
        // let tmpStr = OriginValueToCompare.replace(/[^a-zA-Z0-9 ]/g, "")
        // expect(tmp).to.equal(tmpStr)

        // NOT WORKING
        // expect(MyElement.text().replace(/[^a-zA-Z0-9 ]/g, "")).to.equal(project.chanceOrder.replace(/[^a-zA-Z0-9 ]/g, ""))

        // NOT WORKING
        expect(MyElement.text()).to.equal('' + project.chanceOrder+" % edit")
        
        // NOT WORKING
        let tmp1 = "" + MyElement.text()
        let tmp2 = "" + project.chanceOrder +" % edit"
        if(tmp1 == tmp2)
        
            cy.log("=============== YES =====================================")

        
        
        // NOT WORKING
        cy.wrap(tmp1).should('eq', tmp2);
        
        // NOT WORKING
        cy.wrap(tmp1).should('have.text', tmp2);
)

错误消息(总是):

预期 75.999 % 编辑等于 75.999 % 编辑

如果我将 cypress Log 的输出与 notepad++ 进行比较

75.999 % 编辑 75.999 % 编辑

它总是说这两个文件匹配。

我做错了什么?

【问题讨论】:

【参考方案1】:

你可以用这个:

expect(MyElement.text()).to.contain('75.999')

这将检查字符串75.999 是否存在于您提取的文本中。

【讨论】:

以上是关于赛普拉斯:如何比较与从表中读出的字符串/文本连接的不同数据类型的主要内容,如果未能解决你的问题,请参考以下文章

如何验证赛普拉斯中的悬停文本(工具提示)?

赛普拉斯 - 如何按顺序运行测试文件

如何将赛普拉斯的测试运行程序的“控制台日志”(左侧)保存到文件中

赛普拉斯断言文本

如何使用赛普拉斯测试文件输入?

单击赛普拉斯中的完全匹配文本