代码之家  ›  专栏  ›  技术社区  ›  Michael Jay

木偶师:我怎样才能点击一个有特定标签的按钮?

  •  0
  • Michael Jay  · 技术社区  · 4 年前

    const button = await this.page.$$eval('button', (elms: Element[], label: string) => {
        const el: Element = elms.find((el: Element) => el.textContent === label)
        console.log(el);
        return el;
    }, label);
    await button.click(); // button is undefined
    

    这个控制台.log在浏览器中打印一个元素,我可以在其上单击()。作品。但是返回值没有到达按钮中。

    $$eval的文档说明:

    0 回复  |  直到 4 年前
        1
  •  1
  •   Vaviloff    4 年前

    您正在从返回找到的DOM元素 $$eval serialazable ,否则它将是未定义的。

    docs :

    如果函数传递给第页,评估返回不可序列化的值,然后 page.evaluate 决心 undefined

        2
  •  1
  •   DLima    4 年前

    您也可以在evaluate搜索中搜索所需的元素,然后从那里单击。

    await page.evaluate(label => {
        $(`button:contains('${label}')`)[0].click()
    }, label)
    

    如果函数传递给第页,评估返回不可序列化的值,然后第页,评估解析为未定义

        3
  •  0
  •   Michael Jay    4 年前

    await this.page.$$eval('button', (elms: Element[], label: string) => {
        (elms.find(el => el.textContent === label) as HTMLElement).click();
    }, label);