小编The*_*asn的帖子

在 Puppeteer 中排除具有某些类的元素

我试图用 Puppeteer 解析的 HTML 看起来像这样:

<ul>
    <li class="title"> item 1 </li>
    <li class="title hide"> item 1 </li>
</ul>
Run Code Online (Sandbox Code Playgroud)

我正在访问这样的li元素:

await page.$$eval("ul > li.title", nodes =>
    nodes.map(element => {
      return {
        //some attributes
      };
    })
  );
Run Code Online (Sandbox Code Playgroud)

扩展的结果是只检索没有class=hide. 不幸的hide是,除了 之外还有一个类title,它由所有<li>元素共享。

如何重构 Puppeteer 代码以排除具有hide类的元素?

javascript css node.js google-chrome-devtools puppeteer

2
推荐指数
1
解决办法
2727
查看次数

在Jest中使用toBeCalledWith()测试参数

我有使用puppetteerpage对象评估并返回一些数据的函数。

我想编写一个单元测试,jest以检查是否page.evaluate()采用了指定参数

这是功能

async function cinemasfromState(page, state) {
  const CINEMA_SELECTOR = `div[data-state=$[STATE]] div.top-select-option a.eccheckbox`;
  let res = await page.evaluate(
    (elementPath, state) => {
      let results = Array.from(document.querySelectorAll(elementPath)).map(
        function(cin, index) {
          return {
            //Stuff
          };
          return result;
        },
        { state }
      );
    },
    CINEMA_SELECTOR.replace("$[STATE]", state),
    state
  );

  return res;
}
Run Code Online (Sandbox Code Playgroud)

以下是我的测试结果

describe("cinemasfromState", () => {
  let page_mock = {
    click: jest.fn(() => Promise.resolve()),
    evaluate: jest.fn((selector, state) => Promise.resolve())
  };

  test("page.evaluate called correctly ", …
Run Code Online (Sandbox Code Playgroud)

javascript unit-testing jestjs

1
推荐指数
1
解决办法
3071
查看次数

Object.assign() 和对象数组

我有一个像这样的嵌套数组

const names= [[{name: "John"}, {name: "Mary"}],
           [{name: "Paul"}, {name: "Peter"}]];
Run Code Online (Sandbox Code Playgroud)

我想注入country到嵌套对象中

const country = {country :"USA"}
Run Code Online (Sandbox Code Playgroud)

这样输出看起来像

[{name: "John", country : "USA"}, {etc} ,{etc} ]
Run Code Online (Sandbox Code Playgroud)

代码的想法是这样的

const combined = names.map((map)=> 
       Object.assign({}, 
              country, 
              /*something to extract name from nested array names*/),
       {country}
         )
Run Code Online (Sandbox Code Playgroud)

有什么建议我可以如何将对象传播到嵌套数组中以形成所需的输出?

如果可以通过其他方式改进代码,也请告诉我

javascript arrays spread-syntax

1
推荐指数
1
解决办法
1万
查看次数

访问 puppeteer 中的子元素

我有以下 HTML 结构

<div class ="container" id= "12">
    <div class="details" desc-type= "multiline">
        <a href="#">
            <div class="description"> Some Description </div>
        </a>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

我使用下面的代码抓取这个

const SELECTOR =
    "div.container";

const movies = await page.$$eval(
    SELECTOR,
      nodes =>
        nodes.map(element => {
          return {
            movieID: element.getAttribute("id"),
          };
        } )    
    );
Run Code Online (Sandbox Code Playgroud)

如何修改上面的代码,这样我可以阅读desc-type= "multiline"innerText<div class="description">

javascript webautomation puppeteer

1
推荐指数
1
解决办法
3588
查看次数