I have an issue with tables. Let's say that I have a table with column and rows, I get the need to verify a value before and after
//get the value before
String randomStuff = page.locate(columnSelector).textContent() //This will give us for example Activate
// click on deactivate button
page.locate(deactivateButton).click()
// get the value after
String randomStuff = page.locate(columnSelector).textContent() //This will give us for example Deactivate
The problem is as the element exist anyway, the script give me randomly activate or deactivate, so it generate flakiness.
I have tried
page.waitForLoadState(LoadState.DOMCONTENTLOADED);
page.waitForLoadState(LoadState.NETWORKIDLE);
To wait for element to change, but nothing works.
I even waited for ready state = complete, but nothing works
String state = page.evaluate("document.readyState").toString();
outerloop:while(time<timeout) {
try {
Thread.sleep(200);
} catch (InterruptedException e) {
e.printStackTrace();
}
time+=200;
state = page.evaluate("document.readyState").toString();
if (state.equals("complete"))
break outerloop;
}
I want to wait (dynamically) until the element change the state. When searching for existence or absence of an element in a table for example, tables and column exist even before the search, so Playwright doesn't wait until the table finish loading with search result.
I have many example like this in my web app, and I can't figure out a simple solution that Playwright offers.