मेरे पास एक एंड्रॉइड ऐप है जहां मेरी गतिविधि में सूची दृश्य शामिल है। मैं सूची दृश्य आइटम को हटाने के लिए स्वाइप के लिए ऑटोमेशन टेस्ट केस काम कर रहा हूं। मैंने अपनी सूची दृश्य लाने के लिए यह कोड लिखा है:

    List<WebElement> list = driver.findElements(By.id("com.xyz.email:id/conversation_list_view"));        
    list.get(0).click();

यह कोड प्रथम सूची दृश्य आइटम पर क्लिक करने वाला है, लेकिन यह अपेक्षा के अनुरूप काम नहीं कर रहा है।

मैंने सूची दृश्य आइटम को हटाने के लिए स्वाइप के लिए एक और कोड लिखा है:

MobileElement emailCell = (MobileElement) driver.findElementByXPath("/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.support.v4.widget.DrawerLayout/android.widget.LinearLayout/android.widget.FrameLayout[2]/android.widget.FrameLayout/android.widget.RelativeLayout/android.view.ViewGroup/android.widget.FrameLayout/android.widget.ListView/android.widget.FrameLayout/android.view.View");
    androidPhone.swipeOnElement("left", emailCell);

मेरे पास "swipeOnElement" नामक एक फ़ंक्शन तैयार है जो आइटम को दाएं से बाएं स्वाइप करता है।

    Dimension size = driver.manage().window().getSize();

    double endX = 0;
    double endY = 0;

    int elementX = element.getCenter().x;
    int elementY = element.getCenter().y;
    int finalX;
    int finalY;

    switch (direction) {
        case "left":
            endX = size.width;
            break;

        case "right":
            endX = 0;
            break;

        case "up":
            endY = 0;
            break;

        case "down":
            endY = size.height;
            break;
    }
    if (direction == "left" | direction == "right") {
        finalX = (int) endX;
        finalY = elementY;
    } else {
        finalX = elementX;
        finalY = (int) endY;
    }
    System.out.println("startY=" + elementY);
    System.out.println("startX=" + elementX);
    System.out.println("endY=" + finalY);
    System.out.println("endX=" + finalX);

    new TouchAction(driver)
            .press(element)
            .waitAction(300)
            .moveTo(finalX, finalY)
            .release()
            .perform();
    delay(1000);

यह फ़ंक्शन ठीक है। यह पूरी तरह से काम कर रहा है। लेकिन जब मैंने इसे सूची दृश्य आइटम पर आज़माया, तो यह अपेक्षा के अनुरूप काम नहीं कर रहा है। मुझे नहीं पता कि यह ऐसा व्यवहार क्यों करता है। कृपया कोई मदद !!!

2
Kirti Parghi 22 जिंदा 2019, 19:16

2 जवाब

सबसे बढ़िया उत्तर

यहां मुझे अपना समाधान मिला:

TouchAction नामक एक वर्ग उपलब्ध है जहाँ आपको फंक्शनल चेनिंग के रूप में पैरामीटर और कॉल किए गए फ़ंक्शन देने होते हैं।

new TouchAction(driver)
            .press(mobileElement)
            .waitAction(300)
            .moveTo(0,100)
            .release()
            .perform();

यहाँ ड्राइवर AppiumDriver का एक ऑब्जेक्ट है और mobileElement MobileElement का एक ऑब्जेक्ट है। मूव टू फंक्शन वह है जो वास्तव में पूरी स्वाइपिंग चीजें कर रहा है। यह स्वाइप करने के लिए शुरुआती पोजीशन और एंडिंग पोजीशन लेता है।

0
Kirti Parghi 24 जिंदा 2019, 16:40

प्रयत्न

swipeLeft(MobileElement mobileElement) {
        LOGGER.info("Swiping Left ...");
        Dimension size = getWindowSize();
        int x1 = (int) (size.width * 0.01);
         new TouchAction(driver).press(mobileElement).waitAction(Duration.ofSeconds(1)).moveTo(x1,0).release().perform();
    }
-1
Shrirang Andurkar 24 जिंदा 2019, 07:36