如何使用带有赛普拉斯的 writeFile 正确发送数据

问题描述

我正在练习并试图在文件中写入来自亚马逊的“汽车”的所有名称链接。 以下代码正在运行,但只会在 txt 文件中写入一行。我怎样才能写出完整的清单?也许作为一个对象?

有没有更好的方法来做到这一点?

it.only("amazon cars",() => {
    cy.get("input#twotabsearchtextBox").type("cars{enter}");
    cy.get(".s-main-slot")
      .find("div>h2>a>span")
      .each((element) => {
        const elname = element.text();
        cy.wrap(element)
          .parent()
          .invoke("attr","href")
          .then((href) => {
            cy.writeFile("element.txt",`${elname} and its link ${href}`);
          });
      });
  });

解决方法

您可以使用 append mode of cy.writefile()

cy.writeFile("element.txt",`${elname} and its link ${href}`,{ flag: 'a+' });

或者,放弃 .each() 并改用映射函数。这样你只需要写一次。

cy.get('.s-main-slot')
  .find('div>h2>a>span')
  .then($cars => {

    const descriptions = [...$cars].map(car => {  // car is raw element
      const elname = car.innerText;               // use DOM property innerText
      const href = car.parentElement.href;        // use DOM method parentElement
      return `${elname} and its link ${href}`
    })

    cy.writeFile('element.txt',descriptions.join('\n'))
  })

或者对于更清晰的映射函数,取跨度的父级,文本仍然相同。

cy.get('.s-main-slot')
  .find('div>h2>a')
  .then($cars => {

    const descriptions = [...$cars].map(car => {
      return `${car.innerText} and its link ${car.href}`)
    })

    cy.writeFile('element.txt',descriptions.join('\n'))
  })

或者作为对象,使用reducer来映射

cy.get('.s-main-slot')
  .find('div>h2>a')
  .then($cars => {

    const asObject = [...$cars].reduce((obj,car) => {
      obj[car.innerText] = car.href;  // "Cars": "https://www.amazon.com...
      return obj;
    },{})

    cy.writeFile("element.json",asObject)
  })
,

每次找到 #include<iostream> #include<vector> using namespace std; int main() { int s(0),values(0); vector <int> grades; cout << "Enter the number of grades you want to enter: \n"; cin >> s; cout << "Enter the values:"; for (int i(0); i < s; i++) { cin >> values; grades.push_back(values); } int grades_size(grades.size()); int average(0); for (int m(0); m <= grades_size; m++) { average += grades[m]; } average /= grades_size; cout << "Your average is" << average; return 0; } 及其 car 时,您都在重写文件,因此在 href 块的顶层声明一个空的 array & push() 将所有内容传递给它,然后将 it() 数组作为 cars 传递给 cy.writeFile 方法,如下所示:

param