addInitScript
Додає скрипт, який буде виконаний в одному з наступних сценаріїв:
- При кожній навігації по сторінці.
- При кожному прикріпленні або навігац ії дочірнього фрейму. У цьому випадку скрипт виконується в контексті новоприкріпленого фрейму.
Скрипт виконується після створення документа, але перед запуском будь-яких його скриптів. Щоб видалити скрипт ініціалізації зі сторінки, викличте функцію, яка була повернута цією функцією.
Це корисно для зміни середовища JavaScript, наприклад, для ініціалізації Math.random.
Usage
browser.addInitScript(script, args)
Parameters
Name | Type | Details |
---|---|---|
script | Function | function to be injected as initialization script |
args | number, string, boolean | parameters for the script |
Examples
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, ...
})