كيفية التحقق من تلميح الأدوات في Selenium

⚡ ملخص ذكي

تحقق من تلميح الأداة في Selenium يغطي WebDriver نمطين موثوقين للتحقق من نص التلميح: قراءة سمة عنوان HTML مباشرةً واستخدام واجهة برمجة تطبيقات الإجراءات للتمرير فوق العناصر التي يتم عرضها بشكل ديناميكي Javaتلميحات الأدوات النصية أو jQuery.

  • ؟؟؟؟ المبدأ الرئيسي: التلميح هو نص يظهر عند تمرير المؤشر فوقه، لذا فإن استراتيجية التحقق تعتمد على مكان تخزين المتصفح لهذا النص في DOM.
  • 🏷️ تلميحات الأدوات الثابتة: للحصول على تلميحات أدوات تعتمد على عناوين HTML، اتصل بـ getAttribute("title") or getDomAttribute("title") وقارنها بالسلسلة المتوقعة.
  • 🖱️ تلميحات الأدوات الديناميكية: بالنسبة لتلميحات الأدوات الخاصة بـ jQuery أو CSS أو الإضافات، استخدم فئة Actions مع moveToElement(target).build().perform() قبل قراءة عنصر التلميح.
  • ⏱️ أفضل ممارسة: انتظر حتى يصبح مربع التلميح مرئيًا بعد تمرير المؤشر فوقه، ثم تحقق من النص باستخدام getText() لتجنب القراءات القديمة أو الفارغة.
  • 🚀 Selenium 4 نصيحة: زوج Selenium مدير مع انتظار صريح بدلاً من Thread.sleep لإجراء فحوصات تلميحات الأدوات المستقرة والخالية من مسار برنامج التشغيل.

تحقق من تلميح الأداة في Selenium ويب درايفر

تلميح الأدوات في Selenium

A تلميح الأدوات في Selenium هو نص قصير يظهر عند تحريك مؤشر الماوس فوق عنصر في صفحة الويب. قد يكون هذا العنصر رابطًا أو صورة أو زرًا أو حقلًا نصيًا. غالبًا ما يقدم هذا النص معلومات إضافية حول العنصر الموجود أسفل المؤشر.

كانت تلميحات الأدوات تُطبّق تقليديًا كخاصية "عنوان" في العنصر. وتُعرض قيمة هذه الخاصية كتلميح عند تمرير مؤشر الماوس فوق العنصر. وهو نص ثابت يُقدّم معلومات عن العنصر دون أي تنسيق.

تتوفر اليوم العديد من الإضافات لتنفيذ تلميحات الأدوات. يتم إنشاء تلميحات الأدوات المتقدمة التي تتضمن التنسيق والعرض والصور والروابط باستخدام Javaإضافات البرمجة النصية أو jQuery، أو باستخدام تلميحات الأدوات CSS فقط.

  • للوصول إلى أو التحقق من تلميحات الأدوات الثابتة المُطبقة من خلال سمة "title" في لغة HTML، استخدم getAttribute("title") يتم استخدام هذه الطريقة على عنصر الويب. تتم مقارنة القيمة المُعادة (نص التلميح) بالقيمة المتوقعة للتحقق.
  • بالنسبة لتطبيقات تلميحات الأدوات الأخرى، استخدم "واجهة برمجة تطبيقات تفاعلات المستخدم المتقدمة" التي يوفرها WebDriver لإنشاء تأثير تحريك الماوس ثم استرداد تلميح الأداة للعنصر.

ملخص لواجهة برمجة تطبيقات تفاعلات المستخدم المتقدمة

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

يمكنك الرجوع إلى هذا مرجع فئة الإجراءات الرسمية لمزيد من التفاصيل حول واجهة برمجة التطبيقات.

قبل القفزping لننتقل إلى السيناريوهات، دعونا نلقي نظرة على الفئات والأساليب التي نحتاجها لتحريك عنصر شريط التمرير بمقدار إزاحة.

الخطوة 1) لاستخدام واجهة برمجة التطبيقات (API)، قم باستيراد الحزم والفئات التالية:

واجهة برمجة تطبيقات تفاعلات المستخدم المتقدمة

الخطوة 2) أنشئ كائنًا من فئة "الإجراءات" وقم ببناء سلسلة من إجراءات المستخدم. تُنشئ فئة الإجراءات إجراءات متسلسلة مثل moveToElement() و dragAndDrop(). يتم تمرير كائن المُشغِّل كمعامل إلى مُنشئه.

واجهة برمجة تطبيقات تفاعلات المستخدم المتقدمة

الخطوة 3) أنشئ كائن Action باستخدام دالة build() الخاصة بفئة "Actions". استدعِ دالة perform() لتنفيذ كل إجراء مُدرج في قائمة الانتظار على المُنشئ.

واجهة برمجة تطبيقات تفاعلات المستخدم المتقدمة

لقد رأينا كيفية استخدام بعض طرق إجراءات المستخدم التي توفرها واجهة برمجة التطبيقات (API): clickAndHold(element)، و moveByOffset(10, 0)، و release(). وتوفر واجهة برمجة التطبيقات (API) المزيد من الطرق.

تطبيق تلميحات الأدوات مقابل Selenium نهج التحقق

نوع تلميح الأداة كيفية عرضها Selenium النهج
سمة العنوان في لغة HTML يتم تخزين النص على العنصر نفسه؛ ويعرضه المتصفح عند تمرير المؤشر فوقه. اقرأ مع getAttribute("title") or getDomAttribute("title")لا حاجة للتحويم.
إضافة jQuery / JS يظهر قسم مخصص بجوار العنصر عند تمرير مؤشر الماوس فوقه. استخدام الإجراءات moveToElement(target).perform()انتظر، ثم اقرأ عنصر التلميح باستخدام getText().
تلميح أدوات CSS فقط عنصر زائف أو عنصر div شقيق يتم تبديله باستخدام :hover. قم بتفعيل خاصية التمرير باستخدام الإجراءات واقرأ النص المعروض أو النمط المحسوب.

كيفية التحقق من (التعامل) مع تلميح الأدوات في Selenium

دعونا نستعرض كيفية الوصول إلى تلميحات الأدوات والتحقق منها من خلال سيناريوهين شائعين:

  • السيناريو 1: يتم تنفيذ التلميح باستخدام سمة "العنوان".
  • السيناريو الثاني: يتم تنفيذ تلميح الأدوات باستخدام إضافة jQuery.

السيناريو 1: سمة "العنوان" في HTML

في هذه الحالة، نستخدم الموقع النموذجي https://demo.guru99.com/test/social-icon.html وتحقق من تلميح الأداة الخاص بأيقونة "github" في أعلى يمين الصفحة.

سمة "عنوان" HTML

نقوم أولاً بتحديد موقع العنصر، ثم نقرأ سمة "العنوان" الخاصة به ونقارنها بنص التلميح المتوقع.

لأن التلميح موجود في سمة "العنوان"، فإننا لا نقوم حتى بأتمتة عملية تحريك الماوس فوق العنصر؛ بل نقوم ببساطة باسترداد قيمة السمة باستخدام طريقة getAttribute().

سمة "عنوان" HTML

هذا هو الرمز:

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.*;

public class ToolTip {
    public static void main(String[] args) {

        String baseUrl = "https://demo.guru99.com/test/social-icon.html";
        System.setProperty("webdriver.chrome.driver", "G:\\chromedriver.exe");
        WebDriver driver = new ChromeDriver();
        driver.get(baseUrl);
        String expectedTooltip = "Github";

        // Find the Github icon at the top right of the header
        WebElement github = driver.findElement(By.xpath(".//*[@class='soc-ico show-round']/a[4]"));

        // Read the "title" attribute value of the Github icon
        String actualTooltip = github.getAttribute("title");

        // Assert that the tooltip value matches the expected one
        System.out.println("Actual Title of Tool Tip " + actualTooltip);
        if (actualTooltip.equals(expectedTooltip)) {
            System.out.println("Test Case Passed");
        }
        driver.close();
    }
}

شرح الكود:

  1. ابحث عن WebElement الذي يمثل أيقونة "github".
  2. اقرأ سمة "العنوان" الخاصة بها باستخدام طريقة getAttribute().
  3. قارن القيمة بنص التلميح المتوقع.

Selenium نصيحة واحدة: تفضل getDomAttribute("title") بالنسبة لخاصية HTML الحرفية، ودع Selenium يقوم المدير بحل مشكلة برنامج التشغيل بدلاً من ترميزه بشكل ثابت. chromedriver.exe.

السيناريو الثاني: إضافة jQuery

تُنفذ العديد من إضافات jQuery تلميحات الأدوات، وكل واحدة منها تعرضها بشكل مختلف قليلاً.

بعض الإضافات تُبقي علامات التلميح بجوار عنصر التشغيل في جميع الأوقات، بينما تقوم إضافات أخرى بإنشاء علامة "div" ديناميكيًا عندما يدخل المؤشر إلى عنصر التشغيل.

في هذا العرض التوضيحي، نستخدم نمط "jQuery Tools Tooltip".

ساعات العمل https://demo.guru99.com/test/tooltip.htmlيؤدي تحريك المؤشر فوق "التنزيل الآن" إلى إظهار تلميح متقدم يحتوي على صورة وخلفية توضيحية وجدول صغير ورابط قابل للنقر.

تلميح أداة إضافة jQuery

إذا تفحصت الكود المصدري، ستجد أن عنصر div الذي يمثل التلميح موجود بالفعل بجوار رابط "التحميل الآن". ويتحكم وسم البرنامج النصي أدناه في وقت ظهوره.

مصدر تلميح أداة jQuery Plugin

والآن نتحقق من نص الرابط المعروض داخل التلميح.

حدد أولاً عنصر الويب الخاص بعبارة "التنزيل الآن". استخدم واجهة برمجة تطبيقات التفاعلات للانتقال إلى العنصر (عن طريق تحريك مؤشر الماوس فوقه). بعد ذلك، ابحث عن عنصر الويب الذي يُطابق الرابط الموجود داخل تلميح الأدوات المعروض، وتحقق من النص الموجود فيه مقارنةً بالقيمة المتوقعة.

التحقق من تلميحات أدوات إضافة jQuery

هذا هو الرمز:

import org.openqa.selenium.interactions.Actions;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.*;

public class JqueryToolTip {
    public static void main(String[] args) {

        String baseUrl = "https://demo.guru99.com/test/tooltip.html";
        System.setProperty("webdriver.chrome.driver", "G:\\chromedriver.exe");

        WebDriver driver = new ChromeDriver();
        String expectedTooltip = "What's new in 3.2";
        driver.get(baseUrl);

        WebElement download = driver.findElement(By.xpath(".//*[@id='download_now']"));
        Actions builder = new Actions(driver);

        // Hover over the "Download now" link to reveal the tooltip
        builder.moveToElement(download).build().perform();

        WebElement toolTipElement = driver.findElement(By.xpath(".//*[@class='box']/div/a"));
        String actualTooltip = toolTipElement.getText();

        System.out.println("Actual Title of Tool Tip " + actualTooltip);
        if (actualTooltip.equals(expectedTooltip)) {
            System.out.println("Test Case Passed");
        }
        driver.close();
    }
}

Code التفسير:

  1. حدد موقع عنصر الويب الذي يرتبط بعنصر "التنزيل الآن" الذي ستمرر مؤشر الماوس فوقه.
  2. استخدم واجهة برمجة تطبيقات التفاعلات لتحريك المؤشر فوق "التنزيل الآن".
  3. بمجرد ظهور التلميح، حدد موقع عنصر الويب الذي يمثل الرابط داخل التلميح (علامة "a").
  4. اقرأ نص التلميح باستخدام getText() وقارنها بالقيمة المتوقعة المخزنة في expectedTooltip.

الأسئلة الشائعة

إذا تم إنشاء تلميح الأدوات باستخدام سمة عنوان HTML، فقم باستدعاء getAttribute(“title”) أو getDomAttribute(“title”) على عنصر الويب وقارن النص المُعاد بالقيمة المتوقعة.

استخدم فئة الإجراءات لنقل العنصر (الهدف).perform()، وانتظر حتى يصبح عنصر التلميح مرئيًا، ثم اقرأ نصه أو سماته باستخدام getText() وتحقق من القيمة.

يُرجع قيمة فارغة (null) عندما لا يحتوي العنصر على سمة عنوان (title) أو عندما يتم عرض نص التلميح ديناميكيًا من خلال عنصر div منفصل. افحص DOM واستهدف حاوية التلميح الفعلية.

تقوم الأدوات المدعومة بالذكاء الاصطناعي بإنشاء محددات المواقع تلقائيًا، وإصلاح المحددات ذاتيًا عند تغيير DOM، واقتراح تسلسلات التمرير، مما يقلل من اختبارات تلميحات الأدوات غير المستقرة ووقت الصيانة عبر المتصفحات.

نعم. تقوم مساعدات الذكاء الاصطناعي الحديثة بمسح الصفحة، واكتشاف العناصر التي يمكن تحريك المؤشر فوقها، وإنشاء ملفات جاهزة للتنفيذ. Selenium البرامج النصية التي تتضمن تأكيدات، مما يقلل بشكل كبير من جهد كتابة البرامج النصية اليدوية لتغطية تلميحات الأدوات.

تلخيص هذه التدوينة بـ: