kmeshavkin
kmeshavkin

Reputation: 335

Puppeteer - wait for element to have certain value

How can I wait until an element has a certain value?

For example, some button on a page changes the value of an input field from "No Value" to "Value X". The problem is, I don't know how much time will it take so page.waitFor() is not an option.

I thought I could use page.waitForSelector(input:contains('No Value')); but that does not work as far as I understand.

Possibly page.waitForFunction() should work, but I am not sure what function to write there. Would I use a page.evaluate that returns the value of the input maybe?

Upvotes: 17

Views: 19362

Answers (1)

Vaviloff
Vaviloff

Reputation: 16838

According to docs page.waitForFunction will wait until the function passed to it (as a closure or a string) returns a truthy value.

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();
});

Upvotes: 31

Related Questions