O driver da web PHP espera pelo Ajax terminar de executar
Oct 29 2020
Quero apenas verificar se o ajax não está mais em execução, mas não há muito em termos de documentação para isso.
A resposta mais próxima que encontrei é: phpwebdriver selenium aguarde ajax
Tentei adaptar o código na resposta abaixo:
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);
}
Mas está retornando o seguinte:
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
Tentei variações de $ condition , mas continua retornando a mesma coisa. Claro que outras pessoas achariam esta solução útil, pois ajudaria a determinar quando os contêineres de página terminaram de recarregar com novo conteúdo via Ajax ou simplesmente para ser capaz de confirmar quando o javascript parou de ser executado na página usando o php webdriver
Respostas
1 OndrejMachulda Nov 04 2020 at 15:11
Se estiver fazendo solicitações AJAX usando jQuery, você pode usar isto:
$driver->wait()->until( function ($driver) {
return $driver->executeScript('return jQuery.active === 0;');
}
);
O que significa um erro “Não é possível encontrar o símbolo” ou “Não é possível resolver o símbolo”?
Christopher Nolan uma vez se arrependeu de ter lido o 'roteiro de Pulp Fiction' de Quentin Tarantino