پرش به محتوای اصلی

افزودن اسکریپت اولیه

اسکریپتی را اضافه می‌کند که در یکی از سناریوهای زیر ارزیابی می‌شود:

  • هر زمان که صفحه پیمایش می‌شود.
  • هر زمان که فریم فرزند پیوست یا پیمایش می‌شود. در این حالت، اسکریپت در زمینه فریم تازه پیوست‌شده ارزیابی می‌شود.

اسکریپت پس از ایجاد سند اما قبل از اجرای هر یک از اسکریپت‌های آن ارزیابی می‌شود. برای حذف مجدد اسکریپت مقداردهی اولیه از صفحه، تابعی را که توسط این تابع برگردانده شده است، فراخوانی کنید.

این برای اصلاح محیط جاوااسکریپت مفید است، به عنوان مثال برای مقداردهی اولیه Math.random.

استفاده
browser.addInitScript(script, args)
پارامترها
نامنوعجزئیات
scriptFunctionتابعی که به عنوان اسکریپت مقداردهی اولیه تزریق می‌شود
argsnumber, 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, ...
})

Welcome! How can I help?

WebdriverIO AI Copilot