افزودن اسکریپت اولیه
اسکریپتی را اضافه میکند که در یکی از سناریوهای زیر ارزیابی میشود:
- هر زمان که صفحه پیمایش میشود.
- هر زمان که فریم فرزند پیوست یا پیمایش میشود. در این حالت، اسکریپت در زمینه فریم تازه پیوستشده ارزیابی میشود.
اسکریپت پس از ایجاد سند اما قبل از اجرای هر یک از اسکریپتهای آن ارزیابی میشود. برای حذف مجدد اسکریپت مقداردهی اولیه از صفحه، تابعی را که توسط این تابع برگردانده شده است، فراخوانی کنید.
این برای اصلاح محیط جاوااسکریپت مفید است، به عنوان مثال برای مقداردهی اولیه Math.random.
استفاده
browser.addInitScript(script, args)
پارامترها
نام | نوع | جزئیات |
---|---|---|
script | Function | تابعی که به عنوان اسکریپت مقداردهی اولیه تزریق میشود |
args | number, string, boolean | پارامترهایی برای اسکریپت |
مثالها
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, ...
})