Selenium Java - JavaScriptExecutor
You want to test a web page that loads data dynamically after 3 seconds. Which async script approach correctly waits for the data load before continuing?
driver.executeAsyncScript(
"var callback = arguments[0];
var checkData = () => {
if(document.querySelector('#data').innerText !== '') {
callback('loaded');
} else {
setTimeout(checkData, 500);
}
};
checkData();
");