【问题标题】:Puppeteer - wait for element to have certain valuePuppeteer - 等待元素具有一定的价值
【发布时间】:2018-10-26 15:25:14
【问题描述】:

所以问题是 - 如何等到元素具有特定值? 例如,某些页面上的某些按钮将输入字段的值从“无值”更改为“值 X”。问题是 - 我不知道需要多长时间,所以 page.waitFor() 不是一个选项。 我想我可以使用 page.waitForSelector(input:contains('No Value'));但据我所知,这不起作用。 可能 page.waitForFunction() 应该可以工作,但我不确定在那里写什么函数(page.evaluate 可能返回输入值?)。

【问题讨论】:

    标签: asynchronous jestjs puppeteer


    【解决方案1】:

    根据docspage.waitForFunction 将等到传递给它的函数(作为闭包或字符串)返回一个真值。

    const puppeteer = require('puppeteer');
    
    puppeteer.launch({headless : false}).then(async browser => {
      const page = await browser.newPage();
      await page.goto(url);
      await page.waitForFunction('document.getElementById("wait").value != "No Value"');
      console.log('Value changed!');
      await browser.close();
    });
    

    【讨论】:

    • 使用 ElementHandles 时,这个 waitForFunction 函数调用会是什么样子?
    • @Ini 抱歉不能就此提出建议,老实说,我一直更喜欢 page.evaluate 的明确性质,甚至从不触摸手柄。
    • 没问题。我只是认为使用字符串作为代码看起来 IMO 非常可怕('document.getElementById("wait").value != "No Value"'
    • 我的感觉完全相反 :) 对我来说,它感觉很简短。
    猜你喜欢
    • 2020-03-28
    • 1970-01-01
    • 2020-03-09
    • 2019-06-28
    • 1970-01-01
    • 1970-01-01
    • 2019-06-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多