التكوين
اعتمادًا على نوع الإعداد (مثل استخدام ارتباطات البروتوكول الأساسية، WebdriverIO كحزمة مستقلة أو اختبار WDIO)، هناك مجموعة مختلفة من الخيارات المتاحة للتحكم في البيئة.
خيارات WebDriver
الخيارات التالية محددة عند استخدام حزمة بروتوكول webdriver:
protocol
البروتوكول المستخدم عند التواصل مع خادم السائق.
النوع: String
الافتراضي: http
hostname
مضيف خادم السائق الخاص بك.
النوع: String
الافتراضي: 0.0.0.0
port
المنفذ الذي يستخدمه خادم ال سائق الخاص بك.
النوع: Number
الافتراضي: undefined
path
المسار إلى نقطة نهاية خادم السائق.
النوع: String
الافتراضي: /
queryParams
معلمات الاستعلام التي يتم نقلها إلى خادم السائق.
النوع: Object
الافتراضي: undefined
user
اسم المستخدم الخاص بخدمة السحابة الخاصة بك (يعمل فقط لحسابات Sauce Labs، Browserstack، TestingBot أو TestMu AI). إذا تم تعيينه، سيقوم WebdriverIO تلقائيًا بتعيين خيارات الاتصال لك. إذا كنت لا تستخدم مزود سحابة، يمكن استخدام هذا للمصادقة مع أي خلفية WebDriver أخرى.
النوع: String
الافتراضي: undefined
key
مفتاح الوصول لخدمة السحابة الخاصة بك أو المفتاح السري (يعمل فقط لحسابات Sauce Labs، Browserstack، TestingBot أو TestMu AI). إذا تم تعيينه، سيقوم WebdriverIO تلقائيًا بتعيين خيارات الاتصال لك. إذا كنت لا تستخدم مزود سحابة، يمكن استخدام هذا للمصادقة مع أي خلفية WebDriver أخرى.
النوع: String
الافتراضي: undefined
capabilities
يحدد القدرات التي تريد تشغيلها في جلسة WebDriver الخاصة بك. تحقق من بروتوكول WebDriver للمزيد من التفاصيل. إذا كنت تقوم بتشغيل سائق أقدم لا يدعم بروتوكول WebDriver، فستحتاج إلى استخدام قدرات JSONWireProtocol لتشغيل جلسة بنجاح.
بالإضافة إلى القدرات المستندة إلى WebDriver، يمكنك تطبيق خيارات خاصة بالم تصفح والبائع تسمح بتكوين أعمق للمتصفح البعيد أو الجهاز. هذه موثقة في وثائق البائع المقابلة، على سبيل المثال:
goog:chromeOptions: لـ Google Chromemoz:firefoxOptions: لـ Mozilla Firefoxms:edgeOptions: لـ Microsoft Edgesauce:options: لـ Sauce Labsbstack:options: لـ BrowserStackselenoid:options: لـ Selenoid
بالإضافة إلى ذلك، أداة مفيدة هي مكون اختبار آلي من Sauce Labs، والذي يساعدك على إنشاء هذا الكائن بالنقر معًا على القدرات المطلوبة.
النوع: Object
الافتراضي: null
مثال:
{
browserName: 'chrome', // خيارات: `chrome`, `edge`, `firefox`, `safari`
browserVersion: '27.0', // إصدار المتصفح
platformName: 'Windows 10' // منصة نظام التشغيل
}
إذا كنت تقوم بتشغيل اختبارات ويب أو اختبارات أصلية على الأجهزة المحمولة، فإن capabilities تختلف عن بروتوكول WebDriver. راجع وثائق Appium للحصول على مزيد من التفاصيل.
logLevel
مستوى التفصيل في السجلات.
النوع: String
الافتراضي: info
الخيارات: trace | debug | info | warn | error | silent
outputDir
دليل لتخزين جميع ملفات سجل اختبار المشغل (بما في ذلك سجلات المراسل وسجلات wdio). إذا لم يتم تعيينه، فسيتم توجيه جميع السجلات إلى stdout. نظرًا لأن معظم المراسلين مصممة للسجل إلى stdout، يوصى باستخدام هذا الخيار فقط لمراسلين محددين حيث يكون من المنطقي أكثر دفع التقرير إلى ملف (مثل مراسل junit، على سبيل المثال).
عند التشغيل في وضع مستقل، السجل الوحيد الذي يتم إنشاؤه بواسطة WebdriverIO هو سجل wdio.
النوع: String
الافتراضي: null
connectionRetryTimeout
مهلة لأي طلب WebDriver إلى سائق أو شبكة.
النوع: Number
الافتراضي: 120000
connectionRetryCount
العدد الأقصى لإعادة محاولات الطلب إلى خادم Selenium.
النوع: Number
الافتراضي: 3
agent
يسمح لك باستخدام وكيل مخصص http/https/http2 وكيل لإرسال الطلبات.
النوع: Object
الافتراضي:
{
http: new http.Agent({ keepAlive: true }),
https: new https.Agent({ keepAlive: true })
}
headers
حدد رؤوس headers مخصصة لتمريرها في كل طلب WebDriver. إذا كانت شبكة Selenium الخاصة بك تتطلب المصادقة الأساسية، نوصي بتمرير رأس Authorization من خلال هذا الخيار لمصادقة طلبات WebDriver الخاصة بك، على سبيل المثال:
import { Buffer } from 'buffer';
// قراءة اسم المستخدم وكلمة المرور من متغيرات البيئة
const username = process.env.SELENIUM_GRID_USERNAME;
const password = process.env.SELENIUM_GRID_PASSWORD;
// دمج اسم المستخدم وكلمة المرور بفاصل نقطتان
const credentials = `${username}:${password}`;
// ترميز بيانات الاعتماد باستخدام Base64
const encodedCredentials = Buffer.from(credentials).toString('base64');
export const config: WebdriverIO.Config = {
// ...
headers: {
Authorization: `Basic ${encodedCredentials}`
}
// ...
}
النوع: Object
الافتراضي: {}
transformRequest
دالة تعترض خيارات طلب HTTP قبل إجراء طلب WebDriver
النوع: (RequestOptions) => RequestOptions
الافتراضي: لا شيء
transformResponse
دالة تعترض كائنات استجابة HTTP بعد وصول استجابة WebDriver. يتم تمرير الدالة كائن الاستجابة الأصلي كأول وسيط وRequestOptions المقابلة كثاني وسيط.
النوع: (Response, RequestOptions) => Response
الافتراضي: لا شيء
strictSSL
ما إذا كان لا يتطلب أن تكون شهادة SSL صالحة.
يمكن تعيينها عبر متغيرات بيئية مثل STRICT_SSL أو strict_ssl.
النوع: Boolean
الافتراضي: true
enableDirectConnect
ما إذا كان تمكين ميزة الاتصال المباشر من Appium. لا يفعل شيئًا إذا لم يكن للاستجابة مفاتيح مناسبة أثناء تمكين العلامة.
النوع: Boolean
الافتراضي: true
cacheDir
المسار إلى جذر دليل ذاكرة التخزين المؤقت. يستخدم هذا الدليل لتخزين جميع برامج التشغيل التي يتم تنزيلها عند مح اولة بدء جلسة.
النوع: String
الافتراضي: process.env.WEBDRIVER_CACHE_DIR || os.tmpdir()
maskingPatterns
للحصول على سجل أكثر أمانًا، يمكن للتعبيرات العادية المعينة بـ maskingPatterns إخفاء المعلومات الحساسة من السجل.
- تنسيق السلسلة هو تعبير عادي مع أو بدون أعلام (مثل
/.../i) وتفصل بفواصل للتعبيرات المتعددة. - لمزيد من التفاصيل حول أنماط التقنيع، راجع قسم أنماط التقنيع في README الخاص بـ WDIO Logger.
النوع: String
الافتراضي: undefined
مثال:
{
maskingPatterns: '/--key=([^ ]*)/i,/RESULT (.*)/'
}
WebdriverIO
يمكن استخدام الخيارات التالية (بما في ذلك الخيارات المذكورة أعلاه) مع WebdriverIO بشكل مستقل:
automationProtocol
حدد البروتوكول الذي تريد استخدامه لأتمتة المتصفح. حاليًا يتم دعم webdriver فقط، لأنه تقنية أتمتة المتصفح الرئيسية التي يستخدمها WebdriverIO.
إذا كنت تريد أتمتة المتصفح باستخدام تقنية أتمتة مختلفة، تأكد من تعيين هذه الخاصية إلى مسار يحل إلى وحدة تلتزم بالواجهة التالية:
import type { Capabilities } from '@wdio/types';
import type { Client, AttachOptions } from 'webdriver';
export default class YourAutomationLibrary {
/**
* بدء جلسة أتمتة وإرجاع أحادي WebdriverIO [monad](https://github.com/webdriverio/webdriverio/blob/940cd30939864bdbdacb2e94ee6e8ada9b1cc74c/packages/wdio-utils/src/monad.ts)
* مع أوامر الأتمتة المعنية. انظر حزمة [webdriver](https://www.npmjs.com/package/webdriver)
* كتنفيذ مرجعي
*
* @param {Capabilities.RemoteConfig} options خيارات WebdriverIO
* @param {Function} hook يسمح بتعديل العميل قبل إطلاقه من الوظيفة
* @param {PropertyDescriptorMap} userPrototype يسمح للمستخدم بإضافة أوامر بروتوكول مخصصة
* @param {Function} customCommandWrapper يسمح بتعديل تنفيذ الأمر
* @returns مثيل عميل متوافق مع WebdriverIO
*/
static newSession(
options: Capabilities.RemoteConfig,
modifier?: (...args: any[]) => any,
userPrototype?: PropertyDescriptorMap,
customCommandWrapper?: (...args: any[]) => any
): Promise<Client>;
/**
* يسمح للمستخدم بالاتصال بجلسات موجودة
* @optional
*/
static attachToSession(
options?: AttachOptions,
modifier?: (...args: any[]) => any, userPrototype?: {},
commandWrapper?: (...args: any[]) => any
): Client;
/**
* يغير معرف جلسة المثيل وقدرات المتصفح للجلسة الجديدة
* مباشرة في كائن المتصفح الممرر
*
* @optional
* @param {object} instance الكائن الذي نحصل عليه من جلسة متصفح جديدة.
* @returns {string} معرف الجلسة الجديد للمتصفح
*/
static reloadSession(
instance: Client,
newCapabilities?: WebdriverIO.Capabilitie
): Promise<string>;
}
النوع: String
الافتراضي: webdriver
baseUrl
اختصر استدعاءات أمر url عن طريق تعيين URL أساسي.
- إذا بدأ معلمة
urlالخاصة بك بـ/، فسيتم إضافةbaseUrlفي المقدمة (باستثناء مسارbaseUrl، إذا كان لديه مسار). - إذا بدأ معلمة
urlالخاصة بك بدون نظام أو/(مثلsome/path)، فسيتم إضافةbaseUrlالكامل مباشرة في المقدمة.
النوع: String
الافتراضي: null
waitforTimeout
المهلة الافتراضية لجميع أوامر waitFor*. (لاحظ الحرف الصغير f في اسم الخيار.) هذه المهلة تؤثر فقط على الأوامر التي تبدأ بـ waitFor* ووقت الانتظار الافتراضي الخاص بها.
لزيادة مهلة الاختبار، يرجى الاطلاع على وثائق الإطار.
النوع: Number
الافتراضي: 5000
waitforInterval
الفاصل الزمني الافتراضي لجميع أوامر waitFor* للتحقق مما إذا كانت حالة متوقعة (على سبيل المثال، الرؤية) قد تغيرت.
النوع: Number
الافتراضي: 100