فئة العمل في السيلينيوم - أحداث النقر بالماوس ولوحة المفاتيح

في هذا البرنامج التعليمي، سوف نتعلم كيفية التعامل مع حدث لوحة المفاتيح والماوس في برنامج Selenium Webdriver

فئة العمل في السيلينيوم

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

التعامل مع أحداث لوحة المفاتيح والماوس

تتم معالجة أحداث لوحة المفاتيح والماوس الخاصة باستخدام واجهة برمجة تطبيقات تفاعلات المستخدم المتقدمة. يحتوي على الإجراءات و اكشن الفئات المطلوبة عند تنفيذ هذه الأحداث. المتابعةwing هي أحداث لوحة المفاتيح والماوس الأكثر استخدامًا والتي توفرها فئة الإجراءات.

خدمة التوصيل الوصف
انقر مع الاستمرار() النقرات (بدون تحرير) في موقع الماوس الحالي.
سياق النقر () ينفذ نقرة سياقية على موقع الماوس الحالي. (إجراء النقر بزر الماوس الأيمن)
doubleانقر() ينفذ أ double-انقر على موقع الماوس الحالي.
السحب والإسقاط (المصدر، الهدف) يقوم بإجراء النقر مع الاستمرار على موقع العنصر المصدر، والانتقال إلى موقع العنصر الهدف، ثم تحرير الماوس.

المعلمات:

عنصر المصدر لمحاكاة الزر لأسفل في.

الهدف - عنصر للانتقال إليه وتحرير الماوس فيه.

DragAndDropBy(المصدر، إزاحة x، إزاحة y) ينفذ النقر مع الاستمرار في موقع العنصر المصدر، ويتحرك بإزاحة معينة، ثم يحرر الماوس.

المعلمات:

عنصر المصدر لمحاكاة الزر لأسفل في.

xOffset - إزاحة الحركة الأفقية.

yOffset- إزاحة الحركة العمودية.

keyDown(modifier_key) ينفذ ضغطة على مفتاح التعديل. لا يحرر مفتاح التعديل - قد تفترض التفاعلات اللاحقة استمرار الضغط عليه.

المعلمات:

modifier_key - أي من مفاتيح التعديل (Keys.ALT أو Keys.SHIFT أو Keys.CONTROL)

keyUp(مفتاح_المعدل) ينفذ إصدار المفتاح.

المعلمات:

modifier_key - أي من مفاتيح التعديل (Keys.ALT أو Keys.SHIFT أو Keys.CONTROL)

moveByOffset(إزاحة x، إزاحة y) يحرك الماوس من موضعه الحالي (أو 0,0) بالإزاحة المحددة.

المعلمات:

إزاحة x- إزاحة أفقية. القيمة السالبة تعني تحريك الماوس لليسار.

y-الإزاحة- الإزاحة العمودية. القيمة السالبة تعني تحريك الماوس لأسفل.

moveToElement(toElement) يحرك الماوس إلى منتصف العنصر.

المعلمات:

toElement- العنصر الذي سيتم الانتقال إليه.

إفراج() لتحرير زر الماوس الأيسر المضغوط في موقع الماوس الحالي
إرسال المفاتيح (onElement، charsequence) يرسل سلسلة من ضغطات المفاتيح على العنصر.

المعلمات:

onElement – ​​العنصر الذي سيتلقى ضغطات المفاتيح، وعادة ما يكون حقل نص

الأحرف - أي قيمة سلسلة تمثل تسلسل ضغطات المفاتيح التي سيتم إرسالها

في فولوwing على سبيل المثال، يجب علينا استخدام الأسلوب moveToElement() لتمرير الماوس فوق أحد صفوف جدول Mercury Tours. انظر المثال أدناه.

التعامل مع أحداث لوحة المفاتيح والماوس

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

الخطوة 1) قم باستيراد ملف الإجراءات و اكشن الطبقات.

التعامل مع أحداث لوحة المفاتيح والماوس

الخطوة 2) إنشاء مثيل لكائن إجراءات جديد.

التعامل مع أحداث لوحة المفاتيح والماوس

الخطوة 3) قم بإنشاء إجراء باستخدام كائن الإجراءات في الخطوة 2.

التعامل مع أحداث لوحة المفاتيح والماوس

في هذه الحالة، سنستخدم طريقة moveToElement() لأننا سنقوم ببساطة بتمرير الماوس فوق رابط "الصفحة الرئيسية". دائمًا ما تكون طريقة build() هي الطريقة النهائية المستخدمة بحيث يتم تجميع جميع الإجراءات المدرجة في خطوة واحدة.

الخطوة 4) استخدم طريقة الأداء () عند تنفيذ كائن الإجراء الذي صممناه في الخطوة 3.

التعامل مع أحداث لوحة المفاتيح والماوس

يوجد أدناه رمز WebDriver بالكامل للتحقق من لون خلفية الملف العنصر قبل وبعد تمرير الماوس.

package newproject;

import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.interactions.Action;
import org.openqa.selenium.interactions.Actions;

public class PG7 {
    
    public static void main(String[] args) {
        String baseUrl = "http://demo.guru99.com/test/newtours/";
        System.setProperty("webdriver.gecko.driver","C:\\geckodriver.exe");
                WebDriver driver = new FirefoxDriver();

                driver.get(baseUrl);           
                WebElement link_Home = driver.findElement(By.linkText("Home"));
                WebElement td_Home = driver
                        .findElement(By
                        .xpath("//html/body/div"
                        + "/table/tbody/tr/td"
                        + "/table/tbody/tr/td"
                        + "/table/tbody/tr/td"
                        + "/table/tbody/tr"));    
                 
                Actions builder = new Actions(driver);
                Action mouseOverHome = builder
                        .moveToElement(link_Home)
                        .build();
                 
                String bgColor = td_Home.getCssValue("background-color");
                System.out.println("Before hover: " + bgColor);        
                mouseOverHome.perform();        
                bgColor = td_Home.getCssValue("background-color");
                System.out.println("After hover: " + bgColor);
                driver.close();
        }
}

يوضح الإخراج أدناه بوضوح أن لون الخلفية أصبح شفافًا بعد تمرير الماوس.

فئة العمل في السيلينيوم

بناء سلسلة من الإجراءات المتعددة

يمكنك إنشاء سلسلة من الإجراءات باستخدام فئتي الإجراء والإجراءات. فقط تذكر إغلاق السلسلة باستخدام طريقة build(). خذ بعين الاعتبار نموذج التعليمات البرمجية أدناه.

بناء سلسلة من الإجراءات المتعددة

public static void main(String[] args) {
String baseUrl = "http://www.facebook.com/"; 
WebDriver driver = new FirefoxDriver();

driver.get(baseUrl);
WebElement txtUsername = driver.findElement(By.id("email"));

Actions builder = new Actions(driver);
Action seriesOfActions = builder
	.moveToElement(txtUsername)
	.click()
	.keyDown(txtUsername, Keys.SHIFT)
	.sendKeys(txtUsername, "hello")
	.keyUp(txtUsername, Keys.SHIFT)
	.doubleClick(txtUsername)
	.contextClick()
	.build();
	
seriesOfActions.perform() ;

}

بناء سلسلة من الإجراءات المتعددة

نبذة عامة

  • تتم معالجة أحداث لوحة المفاتيح والماوس الخاصة باستخدام واجهة برمجة التطبيقات AdvancedUserInteractions.
  • أحداث الكلمات الرئيسية والماوس المستخدمة بشكل متكرر هي doubleClick()، keyUp، DragAndDropBy، contextClick & sendKeys.