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

تلميح الأدوات في 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" في أعلى يمين الصفحة.
نقوم أولاً بتحديد موقع العنصر، ثم نقرأ سمة "العنوان" الخاصة به ونقارنها بنص التلميح المتوقع.
لأن التلميح موجود في سمة "العنوان"، فإننا لا نقوم حتى بأتمتة عملية تحريك الماوس فوق العنصر؛ بل نقوم ببساطة باسترداد قيمة السمة باستخدام طريقة getAttribute().
هذا هو الرمز:
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(); } }
شرح الكود:
- ابحث عن WebElement الذي يمثل أيقونة "github".
- اقرأ سمة "العنوان" الخاصة بها باستخدام طريقة getAttribute().
- قارن القيمة بنص التلميح المتوقع.
Selenium نصيحة واحدة: تفضل getDomAttribute("title") بالنسبة لخاصية HTML الحرفية، ودع Selenium يقوم المدير بحل مشكلة برنامج التشغيل بدلاً من ترميزه بشكل ثابت. chromedriver.exe.
السيناريو الثاني: إضافة jQuery
تُنفذ العديد من إضافات jQuery تلميحات الأدوات، وكل واحدة منها تعرضها بشكل مختلف قليلاً.
بعض الإضافات تُبقي علامات التلميح بجوار عنصر التشغيل في جميع الأوقات، بينما تقوم إضافات أخرى بإنشاء علامة "div" ديناميكيًا عندما يدخل المؤشر إلى عنصر التشغيل.
في هذا العرض التوضيحي، نستخدم نمط "jQuery Tools Tooltip".
ساعات العمل https://demo.guru99.com/test/tooltip.htmlيؤدي تحريك المؤشر فوق "التنزيل الآن" إلى إظهار تلميح متقدم يحتوي على صورة وخلفية توضيحية وجدول صغير ورابط قابل للنقر.
إذا تفحصت الكود المصدري، ستجد أن عنصر div الذي يمثل التلميح موجود بالفعل بجوار رابط "التحميل الآن". ويتحكم وسم البرنامج النصي أدناه في وقت ظهوره.
والآن نتحقق من نص الرابط المعروض داخل التلميح.
حدد أولاً عنصر الويب الخاص بعبارة "التنزيل الآن". استخدم واجهة برمجة تطبيقات التفاعلات للانتقال إلى العنصر (عن طريق تحريك مؤشر الماوس فوقه). بعد ذلك، ابحث عن عنصر الويب الذي يُطابق الرابط الموجود داخل تلميح الأدوات المعروض، وتحقق من النص الموجود فيه مقارنةً بالقيمة المتوقعة.
هذا هو الرمز:
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 التفسير:
- حدد موقع عنصر الويب الذي يرتبط بعنصر "التنزيل الآن" الذي ستمرر مؤشر الماوس فوقه.
- استخدم واجهة برمجة تطبيقات التفاعلات لتحريك المؤشر فوق "التنزيل الآن".
- بمجرد ظهور التلميح، حدد موقع عنصر الويب الذي يمثل الرابط داخل التلميح (علامة "a").
- اقرأ نص التلميح باستخدام
getText()وقارنها بالقيمة المتوقعة المخزنة فيexpectedTooltip.








