Global Side Menu Width
Placeholder

פרויקט Java ו-Appium

פרויקט Java ב-Eclipse עם Appium (Android + iPhone) — מדריך קצר

במאמר הזה נבנה פרויקט Java ב-Eclipse שמתחבר ל-Appium עבור Android וגם iPhone.
אני מניח שכבר התקנתם Appium והגדרתם מכשירים/Emulator לפי המאמרים הקודמים — כאן נתמקד רק בהקמת הפרויקט והקוד.


1) יצירת פרויקט Java ב-Eclipse

  1. File → New → Java Project
  2. שם הפרויקט (לדוגמה): AppiumJavaDemo
  3. Finish

2) הוספת Maven לפרויקט (מומלץ)

הדרך הכי נוחה לנהל תלותים היא Maven. אם הפרויקט כבר Java רגיל, אפשר להמיר ל-Maven:

  1. קליק ימני על הפרויקט → Configure → Convert to Maven Project
  2. Finish

לאחר מכן, פתחו את pom.xml והוסיפו תלותים בסיסיים:

<dependencies>
  <dependency>
    <groupId>io.appium</groupId>
    <artifactId>java-client</artifactId>
    <version>9.2.2</version>
  </dependency>

  <dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-java</artifactId>
    <version>4.20.0</version>
  </dependency>

  <dependency>
    <groupId>org.testng</groupId>
    <artifactId>testng</artifactId>
    <version>7.10.2</version>
    <scope>test</scope>
  </dependency>
</dependencies>

אחרי שמירה, תנו ל-Eclipse למשוך את התלותים (Maven Update אם צריך).


3) יצירת מחלקת בדיקה (TestNG)

צרו Package (למשל: tests) ובתוכו Class בשם BaseTest.

package tests;

import io.appium.java_client.AppiumDriver;
import io.appium.java_client.android.AndroidDriver;
import io.appium.java_client.ios.IOSDriver;

import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Parameters;

import org.openqa.selenium.remote.DesiredCapabilities;

import java.net.URL;

public class BaseTest {

    protected AppiumDriver driver;

    @Parameters({"platform"})
    @BeforeMethod
    public void setUp(String platform) throws Exception {

        DesiredCapabilities caps = new DesiredCapabilities();

        if (platform.equalsIgnoreCase("android")) {
            caps.setCapability("platformName", "Android");
            caps.setCapability("appium:automationName", "UiAutomator2");
            caps.setCapability("appium:deviceName", "Android");
            caps.setCapability("appium:appPackage", "com.company.myapp");
            caps.setCapability("appium:appActivity", ".MainActivity");
            caps.setCapability("appium:noReset", true);

            driver = new AndroidDriver(new URL("http://127.0.0.1:4723"), caps);

        } else if (platform.equalsIgnoreCase("ios")) {
            caps.setCapability("platformName", "iOS");
            caps.setCapability("appium:automationName", "XCUITest");
            caps.setCapability("appium:deviceName", "iPhone");
            caps.setCapability("appium:udid", "00008110-0012345678901234");
            caps.setCapability("appium:bundleId", "com.company.myapp");
            caps.setCapability("appium:noReset", true);

            driver = new IOSDriver(new URL("http://127.0.0.1:4723"), caps);
        }
    }

    @AfterMethod
    public void tearDown() {
        if (driver != null) driver.quit();
    }
}

שימו לב: החליפו appPackage/appActivity ו-bundleId/udid לערכים של האפליקציה שלכם.


4) בדיקה ראשונה (קליק פשוט)

צרו Class בשם SmokeTest באותו package:

package tests;

import org.testng.annotations.Test;

public class SmokeTest extends BaseTest {

    @Test
    public void openApp() {
        // אם הגענו לכאן בלי חריגה, ה-Session נוצר והאפליקציה נפתחה
        System.out.println("Session started: " + driver.getSessionId());
    }
}

5) הרצה ב-Eclipse (Android או iPhone)

הדרך הפשוטה: להריץ עם TestNG ולהעביר פרמטר platform.
אפשר ליצור קובץ testng.xml בפרויקט:

<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd" >
<suite name="AppiumSuite">

  <test name="Android">
    <parameter name="platform" value="android"/>
    <classes>
      <class name="tests.SmokeTest"/>
    </classes>
  </test>

  <test name="iOS">
    <parameter name="platform" value="ios"/>
    <classes>
      <class name="tests.SmokeTest"/>
    </classes>
  </test>

</suite>

ב-Eclipse: קליק ימני על testng.xml → Run As → TestNG Suite.


טיפים קצרים

  • וודאו ש-Appium Server רץ לפני ההרצה (ברירת מחדל: http://127.0.0.1:4723).
  • אם אתם עובדים עם iPhone פיזי, השתמשו באותו UDID גם בחיבור Wi-Fi (הוא לא משתנה).
  • אם ההרצה נכשלת בתחילת Session — לרוב זה בגלל capabilities לא נכונים (bundleId/appActivity וכו’).

מקורות רשמיים: