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, ...
})