executeAsync
Il comando executeAsync
è deprecato e sarà rimosso in una versione futura.
Si prega di utilizzare il comando execute
al suo posto, poiché fornisce un migliore supporto per
la gestione degli errori tramite async
/await
.
Inietta un frammento di JavaScript nella pagina per l'esecuzione nel contesto del frame attualmente selezionato usando l'elemento dato come ambito, poiché è nell'ambito dell'elemento significa che WebdriverIO attenderà automaticamente che l'elemento esista prima di eseguire lo script. Si presume che lo script eseguito sia asincrono e deve segnalare che è terminato invocando la callback fornita, che è sempre fornita come argomento finale alla funzione. Il valore di questa callback sarà restituito al client.
I comandi di script asincroni non possono estendersi oltre i caricamenti di pagina. Se viene attivato un evento di scaricamento durante l'attesa del risultato di uno script, un errore dovrebbe essere restituito al client.
L'argomento script definisce lo script da eseguire sotto forma di corpo di una funzione. La funzione sarà invocata con l'array di argomenti fornito e i valori possono essere accessibili tramite l'oggetto arguments nell'ordine specificato. L'argomento finale sarà sempre una funzione di callback che deve essere invocata per segnalare che lo script è terminato.
Gli argomenti possono essere qualsiasi primitiva JSON, array o oggetto JSON. Gli oggetti JSON che definiscono un riferimento WebElement saranno convertiti nell'elemento DOM corrispondente. Allo stesso modo, qualsiasi WebElements nel risultato dello script sarà restituito al client come oggetti JSON WebElement.
Per favore, usa execute
invece
Utilizzo
$(selector).executeAsync(script, arguments)
Parametri
Nome | Tipo | Dettagli |
---|---|---|
script | String, Function | Lo script da eseguire. |
arguments opzionale | * | argomenti dello script |
Esempio
it('should wait for the element to exist, then executes async javascript on the page with the element as first argument', async () => {
await browser.setTimeout({ script: 5000 })
const text = await $('div').execute((elem, a, b, c, d) => {
// browser context - you may not access client or console
setTimeout(() => {
done(elem.textContent + a + b + c + d)
}, 3000);
}, 1, 2, 3, 4);
// node.js context - client and console are available
// node.js context - client and console are available
console.log(text); // outputs "Hello World1234"
});
Restituisce
- <*>
return
: Il risultato dello script.