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 וכו’).

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


ללימוד עמוק יותר: העתקו את הפרומט הבא ל-ChatGPT, הדביקו ושלחו.

אתה מומחה QA ואוטומציה ב-Java. קראתי את המאמר הזה: https://qablog.co.il/java-appium/

תסביר לי בפשטות (אבל מדויק) את התהליך לפי הסדר:
1) איך ליצור פרויקט Java ב-Eclipse עבור Appium
2) איך להוסיף תלותים (Maven/Gradle) ל-Appium Java Client + TestNG
3) איך לבנות BaseTest שמתחבר ל-Appium Server ומאתחל Driver ל-Android ול-iPhone לפי פרמטר
4) איך להגדיר capabilities לאנדרואיד (UiAutomator2) ולאייפון (XCUITest) ואילו שדות חובה
5) איך להריץ בדיקה דרך testng.xml כך שאותו טסט ירוץ עבור Android או iOS

תשאל אותי עד 5 שאלות קצרות כדי להתאים את ההנחיות אליי (IDE: Eclipse/IntelliJ, Android/iOS או שניהם, מכשיר אמיתי/אמולטור, האם Maven עובד, האם Appium Server רץ).