البرمجة

تحديد عناصر الواجهة في Protractor بدون XPath

في ظل التوجيهات الجديدة الموجودة في دليل الأسلوب الخاص بـ Protractor، يُعتبر استخدام محددات xpath باعتبارها ممارسة غير جيدة. وفي ضوء ذلك، يطرح السائل استفساراً حول كيفية تحديد عنصر الوالد باستخدام محددات أخرى مدمجة في Protractor/WebDriverJS.

أولاً وقبل الانتقال إلى الحلول المحددة، يمكننا أن نفهم أهمية تجنب استخدام xpath في ضوء الأسلوب الذي تم تبنيه. يهدف هذا التوجيه إلى تحسين قابلية صيانة وفهم الاختبارات، حيث يمكن أن تكون تعبيرات xpath غامضة وتعقيدية. لحل مشكلة تحديد عنصر الوالد بدون استخدام xpath، يمكن الاعتماد على محددات Protractor الأخرى.

للبداية، يُفضل استخدام محدد element بالتزامن مع by.xpath في حال كانت تلك الطريقة أمورًا ضرورية. على سبيل المثال:

javascript
this.dashboard = element(by.linkText("Dashboard")).element(by.xpath(".."));

يمكن تحويلها إلى:

javascript
this.dashboard = element(by.linkText("Dashboard")).element(by.xpath(".."));

علاوة على ذلك، يمكن استخدام element مباشرة مع by.xpath لتحديد العنصر الأب:

javascript
this.dashboard = element(by.xpath("//a[text()='Dashboard']/.."));

هنا، يتم استخدام محدد element مع xpath لتحديد الوالد مباشرة بدون الحاجة إلى الرمز .. المستخدم في xpath التقليدي.

وبناءً على السياق، يمكن أيضًا استخدام محددات أخرى كـ by.css بشكل فعال لتحديد الوالد. على سبيل المثال:

javascript
this.dashboard = element(by.css("a:contains('Dashboard')").element(by.xpath(".."));

في هذا المثال، تم استخدام by.css بالتنسيق مع التعبير :contains لتحديد الرابط الذي يحتوي على نص “Dashboard”.

باختصار، يمكن استخدام محددات Protractor المتعددة لتحديد عناصر الواجهة بشكل أكثر فعالية وفعالية، مما يساهم في إنشاء اختبارات موثوقة وذات صيانة جيدة وتجنب الاعتماد على xpath الذي قد يكون غامضًا وصعب الفهم.

المزيد من المعلومات

في سياق استخدام Protractor والبحث عن العنصر الأب بطرق أخرى، يُفضل أيضًا التعرف على محددات أخرى مدمجة في Protractor والتي يمكن أن تساعد في تحديد العناصر بشكل أكثر فعالية. من بين هذه المحددات:

  1. by.binding: يمكن استخدامها لتحديد العناصر بناءً على النصوص التي تم العثور عليها في الواجهة. على سبيل المثال:

    javascript
    this.dashboard = element(by.binding("Dashboard"));
  2. by.partialButtonText: تستخدم لتحديد العناصر باستناد إلى جزء من النص الموجود في العنصر. مثال:

    javascript
    this.dashboard = element(by.partialButtonText("Dash"));
  3. by.cssContainingText: يتيح تحديد العناصر باستناد إلى نص محدد وجزء من تنسيق CSS. على سبيل المثال:

    javascript
    this.dashboard = element(by.cssContainingText("a", "Dashboard"));
  4. by.className: يستخدم لتحديد العناصر باستناد إلى اسم الفئة. مثال:

    javascript
    this.dashboard = element(by.className("dashboard-link"));
  5. by.id: يمكن استخدامها لتحديد العناصر باستناد إلى معرف العنصر. مثال:

    javascript
    this.dashboard = element(by.id("dashboard-link"));
  6. by.tagName: يتيح اختيار العناصر باستناد إلى اسم العنصر (مثل للروابط). مثال:

    javascript
    this.dashboard = element(by.tagName("a"));

تلك المحددات تعد بديلاً فعالًا لاستخدام xpath وتسهل عملية تحديد العناصر في واجهة المستخدم. يمكن تكامل هذه المحددات في استراتيجية البحث عن الوالدين أو العناصر الفرعية بشكل أكثر وضوحاً، مما يجعل الاختبارات أكثر قوة وصيانة.

مقالات ذات صلة

زر الذهاب إلى الأعلى
إغلاق

أنت تستخدم إضافة Adblock

يرجى تعطيل مانع الإعلانات حيث أن موقعنا غير مزعج ولا بأس من عرض الأعلانات لك فهي تعتبر كمصدر دخل لنا و دعم مقدم منك لنا لنستمر في تقديم المحتوى المناسب و المفيد لك فلا تبخل بدعمنا عزيزي الزائر