एक्शन क्लास में Selenium

⚡ स्मार्ट सारांश

एक्शन क्लास में Selenium यह ट्यूटोरियल एडवांस्ड यूजर इंटरेक्शन API के माध्यम से होवर, ड्रैग-एंड-ड्रॉप, राइट-क्लिक और कुंजी संयोजनों जैसे उन्नत कीबोर्ड और माउस इवेंट्स को हैंडल करता है। यह ट्यूटोरियल एक्शन और एक्शन क्लास, मुख्य मेथड्स और कई इंटरैक्शन को एक क्रम में जोड़ने का तरीका बताता है।

  • मूल मकसद: Actions क्लास उन जटिल माउस और कीबोर्ड इवेंट्स को स्वचालित करती है जिन्हें बेसिक click() नहीं कर सकती।
  • 🔑 दो कक्षाएं: Actions अंतःक्रिया का निर्माण करता है; Action निष्पादित करने के लिए संकलित अनुक्रम को संग्रहीत करता है।
  • 🧱 पहले निर्माण करें, फिर प्रदर्शन करें: चेन मेथड्स का उपयोग करें, build() के साथ समाप्त करें और perform() के साथ रन करें।
  • ???? प्रमुख विधियाँ: moveToElement(), dragAndDrop(), keyDown()/keyUp(), contextClick(), और sendKeys().
  • 🤖 एआई सक्षमता: एआई सहायक अंतःक्रिया परीक्षणों के दौरान एक्शन क्लास कोड और सेल्फ-हीलिंग लोकेटर उत्पन्न करते हैं।

माउस-ओवर आउटपुट

एक्शन क्लास में Selenium

एक्शन क्लास में Selenium यह कीबोर्ड और माउस इवेंट को संभालने के लिए एक अंतर्निहित सुविधा है। यह कंट्रोल कुंजी के साथ कई क्लिक, ड्रैग-एंड-ड्रॉप और कई अन्य कार्यों का समर्थन करता है। ये कार्य एडवांस्ड यूजर इंटरेक्शन एपीआई का उपयोग करके किए जाते हैं। Selenium वेबड्राइवर.

कीबोर्ड और माउस इवेंट को संभालना

विशेष कीबोर्ड और माउस इवेंट्स को हैंडल करने के लिए इसका उपयोग किया जाता है। उन्नत उपयोगकर्ता इंटरैक्शन API। इसमें शामिल है क्रियाएँ और कार्य इन इवेंट्स को निष्पादित करने के लिए आवश्यक क्लास। एक्शन क्लास द्वारा प्रदान किए जाने वाले सबसे अधिक उपयोग किए जाने वाले कीबोर्ड और माउस इवेंट नीचे सूचीबद्ध हैं।

विधि विवरण
दबाएं और पकड़े रहें() वर्तमान माउस स्थान पर क्लिक (बिना छोड़े)।
संदर्भक्लिक() वर्तमान माउस स्थान पर कॉन्टेक्स्ट-क्लिक (दायां क्लिक) करता है।
डबल क्लिक करें() वर्तमान माउस स्थान पर डबल-क्लिक करता है।
dragAndDrop(स्रोत, लक्ष्य) स्रोत तत्व पर क्लिक करके दबाए रखें, लक्ष्य तत्व पर जाएं, फिर माउस छोड़ दें। पैरामीटर: स्रोत (जिस तत्व पर क्लिक करना है), लक्ष्य (जिस तत्व पर माउस छोड़ना है)।
dragAndDropBy(स्रोत, x-ऑफ़सेट, y-ऑफ़सेट) स्रोत तत्व पर क्लिक करके दबाए रखने से दिए गए ऑफ़सेट से गति होती है, फिर क्लिक छोड़ दें। पैरामीटर: स्रोत, xOffset (क्षैतिज), yOffset (ऊर्ध्वाधर)।
keyDown(संशोधक_कुंजी) मॉडिफायर कुंजी को दबाए रखता है और उसे छोड़ता नहीं है, इसलिए बाद की क्रियाओं में यह मान लिया जाता है कि कुंजी दबी हुई है। पैरामीटर: एक मॉडिफायर कुंजी (Keys.ALT, Keys.SHIFT, या Keys.CONTROL)।
keyUp(modifier_key) मॉडिफायर कुंजी को रिलीज़ करता है। पैरामीटर: एक मॉडिफायर कुंजी (Keys.ALT, Keys.SHIFT, या Keys.CONTROL)।
moveByOffset(x-ऑफ़सेट, y-ऑफ़सेट) यह माउस को उसकी वर्तमान स्थिति (या 0,0) से दिए गए ऑफ़सेट द्वारा स्थानांतरित करता है। ऋणात्मक x बाईं ओर ले जाता है; ऋणात्मक y ऊपर की ओर ले जाता है।
moveToElement(टूएलिमेंट) माउस को एलिमेंट के मध्य में ले जाता है। पैरामीटर: वह एलिमेंट जिस पर माउस ले जाना है।
मुक्त करना() वर्तमान स्थान पर दबाए गए बाएं माउस बटन को छोड़ देता है।
sendKeys(onElement, वर्ण अनुक्रम) किसी एलिमेंट को कीस्ट्रोक्स की एक श्रृंखला भेजता है। पैरामीटर: onElement (आमतौर पर एक टेक्स्ट फ़ील्ड), charsequence (भेजे जाने वाले कीस्ट्रोक्स)।

निम्नलिखित उदाहरण में, हम इसका उपयोग करते हैं moveToElement() किसी एक पर होवर करने की विधि Mercury टूर टेबल की पंक्तियाँ।

कीबोर्ड और माउस इवेंट्स को हैंडल करना

ऊपर दिखाया गया सेल एक भाग है यह एक एलिमेंट है। जब इस पर माउस नहीं ले जाया जाता, तो इसका रंग #FFC455 (नारंगी) होता है। माउस ले जाने के बाद, सेल का रंग पारदर्शी हो जाता है और आसपास की टेबल की पृष्ठभूमि से मेल खाने लगता है।

चरण 1) आयात करें क्रियाएँ और कार्य कक्षाएं।

आयात क्रियाएँ और क्रिया वर्ग

चरण 2) एक नया एक्शन ऑब्जेक्ट इन्स्टेन्सिएट करें.

Actions ऑब्जेक्ट को इंस्टैंशिएट करें

चरण 3) चरण 2 से प्राप्त Actions ऑब्जेक्ट का उपयोग करके एक Action को इंस्टैंशिएट करें।

एक्शन ऑब्जेक्ट को इंस्टैंशिएट करें

यहां हम का उपयोग करते हैं moveToElement() होम लिंक पर माउस ले जाने का तरीका। build() इस विधि को हमेशा अंत में कॉल किया जाता है ताकि सूचीबद्ध सभी क्रियाएं एक ही चरण में संकलित हो जाएं।

चरण 4) उपयोग perform() चरण 3 में डिज़ाइन किए गए एक्शन ऑब्जेक्ट को निष्पादित करने की विधि।

क्रिया का निष्पादन करें

नीचे पूरा वेबड्राइवर कोड दिया गया है जो बैकग्राउंड कलर की जांच करता है। माउस ओवर से पहले और बाद का तत्व।

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 = "https://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();
    }
}

नीचे दिए गए आउटपुट से पता चलता है कि माउस को उस पर ले जाने के बाद बैकग्राउंड का रंग पारदर्शी हो गया।

माउस-ओवर आउटपुट

अनेक कार्यों की श्रृंखला का निर्माण

आप Action और Actions क्लास का उपयोग करके कई क्रियाएँ बना सकते हैं। श्रृंखला को समाप्त करने के लिए इस फ़ंक्शन का उपयोग करना न भूलें। build() विधि। नीचे दिए गए नमूना कोड पर विचार करें।

कई कार्यों की एक श्रृंखला का निर्माण करना

public static void main(String[] args) {
    String baseUrl = "https://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();
}

क्रियाओं की श्रृंखला आउटपुट

अक्सर पूछे जाने वाले प्रश्न

Action क्लास, Actions क्लास के साथ निर्मित कीबोर्ड और माउस इंटरैक्शन के एक संकलित अनुक्रम का प्रतिनिधित्व करती है। इसे एडवांस्ड यूजर इंटरैक्शन API के माध्यम से निष्पादित किया जाता है। Selenium वेबड्राइवर.

Actions (बहुवचन) वह बिल्डर है जिसका उपयोग होवर और क्लिक जैसी अंतःक्रियाओं को संयोजित करने के लिए किया जाता है। Action (एकवचन) वह संकलित ऑब्जेक्ट है जो build() द्वारा लौटाया जाता है और जिसे आप perform() के साथ चलाते हैं।

build() फ़ंक्शन सभी आपस में जुड़ी अंतःक्रियाओं को एक ही समग्र क्रिया में संकलित करता है। इसे हमेशा perform() से ठीक पहले, सबसे अंत में कॉल किया जाता है, ताकि कतार में मौजूद सभी चरण एक साथ एक क्रम में निष्पादित हों।

perform() फ़ंक्शन ब्राउज़र पर निर्मित Action को निष्पादित करता है। इसके बिना, श्रृंखलाबद्ध अंतःक्रियाएँ केवल कतार में लगी रहती हैं और वास्तव में कभी भी पृष्ठ पर नहीं भेजी जाती हैं।

किसी Actions ऑब्जेक्ट पर moveToElement(element) फ़ंक्शन का उपयोग करें, फिर build() और perform() फ़ंक्शन को कॉल करें। इससे कर्सर एलिमेंट के केंद्र में चला जाता है और होवर करने पर ड्रॉपडाउन मेनू जैसे सभी फ़ंक्शन सक्रिय हो जाते हैं।

यह क्लिकएंडहोल्ड, कॉन्टेक्स्टक्लिक, डबलक्लिक, ड्रैगएंडड्रॉप, ड्रैगएंडड्रॉपबाय, कीडाउन, कीअप, मूवबायऑफसेट, मूवटूएलिमेंट, रिलीज और सेंडकीज को सपोर्ट करता है - जो कि अधिकांश उन्नत इंटरैक्शन को कवर करता है।

एआई टूल्स सेल्फ-हीलिंग लोकेटर्स का उपयोग करते हैं जो एलिमेंट्स में बदलाव होने पर खुद को अनुकूलित कर लेते हैं, जिससे होवर और ड्रैग-एंड-ड्रॉप टेस्ट में होने वाली अनियमित विफलताएं कम हो जाती हैं। ये टूल्स स्थिर XPaths की अनुशंसा भी करते हैं और स्वचालित रूप से स्मार्ट वेट जोड़ते हैं।

जी हां। एआई कोड सहायक "होम बटन पर होवर करें और फिर राइट-क्लिक करें" जैसे सरल अंग्रेजी परिदृश्य को build() और perform() का उपयोग करके एक कार्यशील एक्शन चेन में बदल देते हैं, और मजबूत लोकेटर सुझाते हैं।

इस पोस्ट को संक्षेप में इस प्रकार लिखें: