addInitScript
Agrega un script que se evaluará en uno de los siguientes escenarios:
- Siempre que se navegue por la página.
- Siempre que el marco secundario esté adjunto o se navegue. En este caso, el script se evalúa en el contexto del marco recién adjunto.
El script se evalúa después de que se crea el documento pero antes de que se ejecute cualquiera de sus scripts. Para eliminar el script de inicialización de la página nuevamente, llame a la función que devolvió esta función.
Esto es útil para modificar el entorno JavaScript, por ejemplo, para sembrar Math.random.
Uso
browser.addInitScript(script, args)
Parámetros
Nombre | Tipo | Detalles |
---|---|---|
script | Function | función que se inyectará como script de inicialización |
args | number, string, boolean | parámetros para el script |
Ejemplos
addInitScript.js
const script = await browser.addInitScript((seed) => {
Math.random = () => seed
}, 42)
await browser.url('https://webdriver.io')
console.log(await browser.execute(() => Math.random())) // returns 42
await reset()
await browser.url('https://webdriver.io')
console.log(await browser.execute(() => Math.random())) // returns a random number
hermore you can also use the `emit` function to send data back to the Node.js environment.
is useful if you want to observe certain events in the browser environment, e.g.:
addInitScriptWithEmit.js
const script = await browser.addInitScript((emit) => {
const observer = new MutationObserver((mutations) => {
for (const mutation of mutations) {
emit(mutation.target.nodeName)
}
})
observer.observe(document, { childList: true, subtree: true })
})
script.on('data', (data) => {
console.log(data) // prints: BODY, DIV, P, ...
})