【问题标题】:How to click on dynamic xpath with puppeteer?如何使用 puppeteer 点击动态 xpath?
【发布时间】:2020-01-28 18:17:47
【问题描述】:

我需要在动态 xpath 上单击 puppeteer,但我无法匹配路径。

这是我需要点击的动态路径


 //[@id="Pfb41b20eb4b64727b5db3b2abea2187d_1_oReportCell"]/table/tbody/tr/td/table[2]/tbody/tr[3]/td[1]/div/a

动态部分在P之后开始,到第一个_结束

这是我迄今为止尝试过的


const download = await page.$x('//id[contains("1_oReportCell")]/table/tbody/tr/td/table[2]/tbody/tr[3]/td[1]/div/a');

const download = await page.$x('//*[@id^="P"][@id$="_oReportCell"]/table/tbody/tr/td/table[2]/tbody/tr[3]/td[1]/div/a
');

有人可以帮帮我吗,拜托。

【问题讨论】:

    标签: javascript node.js xpath puppeteer


    【解决方案1】:

    在XPath 1.0中,ends-with()函数可以表示为:

    substring($string, string-length($string) - string-length($pattern) + 1) = $pattern
    

    在您的 XPath 表达式中:

    //[substring(@id, string-length(@id) - 12) = "1_oReportCell"]/table/tbody/tr/td/table[2]/tbody/tr[3]/td[1]/div/a
    

    编辑:当然,XPath 2.0+ 有一个合适的ends-with() 函数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-08-13
      • 2022-07-29
      • 1970-01-01
      • 2020-09-29
      • 2020-06-20
      • 2020-08-09
      • 1970-01-01
      相关资源
      最近更新 更多