פרויקט Java ב-Eclipse עם Appium (Android + iPhone) — מדריך קצר
במאמר הזה נבנה פרויקט Java ב-Eclipse שמתחבר ל-Appium עבור Android וגם iPhone.
אני מניח שכבר התקנתם Appium והגדרתם מכשירים/Emulator לפי המאמרים הקודמים — כאן נתמקד רק בהקמת הפרויקט והקוד.
1) יצירת פרויקט Java ב-Eclipse
- File → New → Java Project
- שם הפרויקט (לדוגמה): AppiumJavaDemo
- Finish
2) הוספת Maven לפרויקט (מומלץ)
הדרך הכי נוחה לנהל תלותים היא Maven. אם הפרויקט כבר Java רגיל, אפשר להמיר ל-Maven:
- קליק ימני על הפרויקט → Configure → Convert to Maven Project
- 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 וכו’).
מקורות רשמיים: