executeAsync
Kommandot executeAsync
är föråldrat och kommer att tas bort i en framtida version.
Använd istället kommandot execute
eftersom det ger bättre stöd för
felhantering via async
/await
.
Injicera ett avsnitt JavaScript i sidan för körning i kontexten av den för närvarande valda ramen med det givna elementet som omfattning, eftersom det är inom elementets omfattning betyder det att WebdriverIO kommer automatiskt vänta på att elementet ska existera innan skriptet körs. Det körda skriptet antas vara asynkront och måste signalera att det är klart genom att anropa den tillhandahållna callback-funktionen, som alltid tillhandahålls som det sista argumentet till funktionen. Värdet till denna callback kommer att returneras till klienten.
Asynkrona skriptkommandon får inte sträcka sig över sidladdningar. Om en avladdningshändelse utlöses medan man väntar på ett skriptresultat, bör ett fel returneras till klienten.
Skriptargumentet definierar skriptet som ska köras i form av en funktionskropp. Funktionen kommer att anropas med den angivna args-arrayen och värdena kan nås via arguments-objektet i den ordning som anges. Det sista argumentet kommer alltid att vara en callback-funktion som måste anropas för att signalera att skriptet har slutförts.
Argument kan vara vilken JSON-primitiv, array eller JSON-objekt som helst. JSON-objekt som definierar en WebElement- referens kommer att konverteras till motsvarande DOM-element. På samma sätt kommer alla WebElements i skriptets resultat att returneras till klienten som WebElement JSON-objekt.
Använd execute
istället
Användning
$(selector).executeAsync(script, arguments)
Parametrar
Namn | Typ | Detaljer |
---|---|---|
script | String, Function | Skriptet som ska köras. |
arguments valfri | * | skriptargument |
Exempel
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"
});
Returnerar
- <*>
return
: Skriptresultatet.