PHP webdriver espera a que Ajax termine de ejecutarse
Oct 29 2020
Simplemente quiero verificar que ajax ya no se esté ejecutando, pero no hay mucha documentación para esto.
La respuesta más cercana que encontré es: phpwebdriver selenium espera a ajax
Intenté adaptar el código en la respuesta a continuación:
public function waitForAjaxComplete()
{
$wait = new WebDriverWait($driver, 30);
$wait->until(function(){ $condition = 'arguments[0].call(null, $.active == 0)'; if($driver->executeAsyncScript(array(
'script' => $condition,
'args' => array()
))
)
return true;
}, 10000);
}
Pero está devolviendo lo siguiente:
PHP Fatal error: Uncaught Facebook\WebDriver\Exception\UnknownServerException: java.util.HashMap cannot be cast to java.lang.String in vendor/facebook/webdriver/lib/Exception/WebDriverException.php:114
Probé variaciones de $ condition , pero sigue devolviendo lo mismo. Seguro que a otros les resultará útil esta solución, ya que ayudaría a determinar cuándo los contenedores de página terminaron de recargarse con nuevo contenido a través de Ajax o simplemente para poder confirmar cuándo javascript dejó de ejecutarse en la página usando php webdriver
Respuestas
1 OndrejMachulda Nov 04 2020 at 15:11
Si está haciendo solicitudes AJAX usando jQuery, puede usar esto:
$driver->wait()->until( function ($driver) {
return $driver->executeScript('return jQuery.active === 0;');
}
);