puppeteer.js单击带有类的超链接

时间:2019-11-04 17:43:03

标签: puppeteer

async function main() {
    const browser = await puppeteer.launch({ headless: false});
    const page = await browser.newPage();

    await page.goto(url);
    console.log(await page.title());

await page.click('a.search-name');

}
<div class="search-results-content-container">
                    <div class="search-results-image-container">
                    </div>
                    <div class="search-results-details-container">
                         <h4 class="search-name"><a href="http://yahoo.com">Doe, Johm</a></h4>
                              <p class="search-title">
                                  center of art
                              </p>
                    </div>

嗨,我正在使用puppeteer来自动执行一些任务,并且一直在继续,直到需要单击h4链接,该链接具有名为“搜索名称”的类。我尝试添加一个等待page.click('a.search-name'),但这不起作用。我也尝试了await page.click('h4.search-name')但也没有运气。有人可以告诉我如何使它单击具有可互换URL的链接。这就是我要专门用搜索名称类单击h4的原因。

2 个答案:

答案 0 :(得分:0)

根据您的测试-await page.click('a.search-name'); a链接没有search-name类,因此找不到选择器,也没有单击任何内容。

如果您想保留search-name上的h4类,建议您将data-test属性添加到链接<a href="http://yahoo.com" data-test='search-name'>并将测试更改为:await page.click('a[data-test="search-name"]'); < / p>

HTML

<div class="search-results-content-container">
  <div class="search-results-image-container">
  </div>
  <div class="search-results-details-container">
    <h4 class="search-name">
      <a href="http://yahoo.com" data-test='search-name'>Doe, Johm</a>
    </h4>
    <p class="search-title">
      center of art
    </p>
  </div>
</div>

现在await page.click('a.search-name');应该可以工作!

好的模式是选择元素时更喜欢使用“ 数据测试”属性选择器。

答案 1 :(得分:0)

下面的代码有效!

await page.waitForSelector('.search-name')
await page.click('.search-name');