javascript - 如何通过数组比较两个元素的文本内容

标签 javascript automated-tests cypress

我需要比较两个不同的元素是否包含相同的文本。 案件: 我有 5 个不同的按钮时间段让我们假设它们是“日、周、月、年、十年” 每次单击某个特定按钮时,我都想比较下表中第二个元素中的值是否也发生了变化并且是否相同。

我的代码是:

isAgregationBarChoosenValuePresent() {
        const selectors = ['button[data-testid="period-button-DAY"]',
                           'button[data-testid="period-button-WEEK"]',
                           'button[data-testid="period-button-MONTH"]',
                           'button[data-testid="period-button-YEAR"]',
                           'button[data-testid="period-button-DECADE"]']
        selectors.forEach(($selector) => {
            cy.get($selector, { timeout: 10000 }).eq(0).click().then($assertion => {
                const assertionText = $assertion.text()
                  return assertionText === cy.get('Second element).text()
})

我假设我不能使用 cy.get('Second element).text()。然后我尝试使用另一个并使用 secondElement.text() 创建一个 const,但效果不佳。

如果你有任何想法,请告诉我。

谢谢

最佳答案

将比较包装在一个函数中,然后为每个按钮调用它

const compare = ($button, selector2) => {
  cy.get(selector2).then($selector2 => {
    expect($button.text()).to.eq($selector2.text())
  })
}

const selectors = ...
selectors.forEach((buttonSelector) => {
  cy.get(buttonSelector, { timeout: 10000 }).click()
    .then($button => compare($button, 'Second element'))

从 DOM 分离

有时按钮元素可能会在点击后被替换(特别是 React 应用程序)。您可能会看到“与 DOM 分离”错误。

在这种情况下,需要在函数内部重新查询按钮

const compare = (buttonSelector, selector2) => {
  cy.get(buttonSelector).then($button => {
    cy.get(selector2).then($selector2 => {
      expect($button.text()).to.eq($selector2.text())
    })
  })
}

const selectors = ...
selectors.forEach((buttonSelector) => {
  cy.get(buttonSelector, { timeout: 10000 }).click()
    .then(() => compare(buttonSelector, 'Second element'))

关于javascript - 如何通过数组比较两个元素的文本内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69134225/

相关文章:

javascript - 是否可以在 QWebView 中从 JavaScript 调用 C++ 函数?

testing - 在 TestCafe 中切换到 iframe 上下文后找不到元素

java - 在 Azure DevOps 管道中为测试用例创建特定工作项(Bug)--Selenium

node.js - 创建项目后 Gatsby 开发不工作

graphql - 如何让 Cypress 动态更新夹具到 graphql 调用

javascript - 使用空数组时比较运算符 JavaScript 的奇怪行为

javascript - 向 api.twitter.com 发出 XMLHttpRequest 的解决方法?

testing - 在线自动化测试类(class)

javascript - 使用 Cypress 在 SVG 上测试 onclick 事件

javascript - [Vue警告] : Failed to resolve component when tried to create global component