【问题标题】:Unable to write entire <tr> in Cypress test script无法在赛普拉斯测试脚本中写入整个 <tr>
【发布时间】:2021-12-20 04:10:42
【问题描述】:

我正在尝试将表中的

元素写入外部文件。但无法保存数据。
const rows = []
cy.get('tbody').eq(2).within(() => {
  cy.get("tr").then((rows) => {
    rows.toArray().forEach((element) => {
        cy.log(element)
        rows.push(element)
      });
  });
});
cy.log(rows)
cy.writeFile('cypress/fixtures/test.txt', rows)

第一个 cy.log() 正在正确打印所需的

。但是第二个 cy.log() 正在打印空数组。文件也是空的。我也尝试直接编写元素但没有运气。请告知我做错了什么。

cy.log(element) 的输出:

<tr class="altRow row1" id="country_list">
    <td>AAE</td> <td>ANNABA</td> <td>DZ</td> <td>ALGERIA</td>
</tr>

【问题讨论】:

    标签: cypress


    【解决方案1】:

    您可以使用id直接获取tr元素。然后使用within 将您的搜索定向到同一个tr 中。然后使用each(),您可以遍历td 元素,然后在txt 文件中写入td 内部文本(国家名称)。 flag: a+确保新内容附加在文件末尾,这样每次写入时文件都不会被覆盖。

    cy.get('tr#country_list').within(() => {
      cy.get('td').each(($ele) => {
        cy.log($ele.text()) //Prints the country names one by one
        cy.writeFile('cypress/fixtures/test.txt', $ele.text(), {flag: 'a+'}) //Adds the country in txt file
      })
    })
    

    【讨论】:

    • 感谢您的回复;不幸的是,这两种解决方案都将空 JSON 标记保存到文件中。 { "0": {}, "length": 1 } cy.log($ele) 正在将元素正确打印到控制台(循环计数也正确)。
    • 我也尝试了二进制模式来避免字符串化,但仍然没有运气。 cy.writeFile('cypress/fixtures/test.txt', element, {encoding: null,flag: 'a+',})
    • 您只想获取 tr 文本还是整个 tr html 元素?并为 tr 元素添加 html 的样子
    • 输出已添加到问题中。
    猜你喜欢
    • 2023-02-10
    • 2023-02-14
    • 2021-06-17
    • 2020-12-23
    • 1970-01-01
    • 2021-11-06
    • 2021-10-20
    • 2020-05-16
    • 1970-01-01
    相关资源
    最近更新 更多