هذه هي روابط لغة Java لكتابة اختبارات Appium التي تتوافق مع بروتوكول WebDriver
منذ الإصدار 9، يدعم العميل فقط Java 11 والإصدارات الأحدث. اتبع دليل الترحيل من الإصدار 8 إلى الإصدار 9 لتبسيط عملية الترحيل.
منذ الإصدار 8، شهد Appium Java Client العديد من التغييرات الرئيسية، والتي قد تتطلب تحديث رمز العميل الخاص بك. تأكد من اتباع دليل الترحيل من الإصدار 7 إلى الإصدار 8 لتبسيط عملية الترحيل.
أضف ما يلي إلى pom.xml:
< dependency >
< groupId >io.appium groupId >
< artifactId >java-client artifactId >
< version >${version.you.require} version >
< scope >test scope >
dependency >
أضف ما يلي إلى build.gradle:
dependencies {
testImplementation ' io.appium:java-client:${version.you.require} '
}
مشروع عميل Java متاح للاستخدام حتى قبل نشره رسميًا على Maven Central. راجع jitpack.io
أضف ما يلي إلى pom.xml:
< repositories >
< repository >
< id >jitpack.io id >
< url >https://jitpack.io url >
repository >
repositories >
أضف التبعية:
< dependency >
< groupId >com.github.appium groupId >
< artifactId >java-client artifactId >
< version >latest commit ID from master branch version >
dependency >
أضف مستودع JitPack إلى ملف البناء الخاص بك. قم بإضافته إلى build.gradle الجذر الخاص بك في نهاية المستودعات:
allprojects {
repositories {
// ...
maven { url ' https://jitpack.io ' }
}
}
أضف التبعية:
dependencies {
implementation ' com.github.appium:java-client:latest commit id from master branch '
}
عميل Appium جافا | عميل السيلينيوم |
---|---|
9.2.1 (المشاكل المعروفة: #2145، #2146)، 9.2.2 ، 9.2.3 ، 9.3.0 | 4.19.0 ، 4.19.1 ، 4.20.0 ، 4.21.0 ، 4.22.0 ، 4.23.0 |
9.1.0 ، 9.2.0 | 4.17.0 ، 4.18.0 ، 4.18.1 |
9.0.0 | 4.14.1 ، 4.15.0 ، 4.16.0 (تالف جزئيًا)، 4.16.1 |
لا يوجد | 4.14.0 |
8.5.0 ، 8.5.1 ، 8.6.0 | 4.9.1 ، 4.10.0 ، 4.11.0 ، 4.12.0 ، 4.12.1 (الإصدار المعروف: #2004)، 4.13.0 |
8.4.0 | 4.8.2 ، 4.8.3 ، 4.9.0 |
8.3.0 | 4.7.0 ، 4.7.1 ، 4.7.2 ، 4.8.0 ، 4.8.1 |
8.2.1 | 4.5.0 ، 4.5.1 ، 4.5.2 ، 4.5.3 ، 4.6.0 |
لا يتبع عميل السيلينيوم الإصدار الدلالي، لذلك قد يتم إدخال تغييرات معطلة حتى في التصحيحات، الأمر الذي يتطلب من فريق Appium تحديث عميل Java استجابةً لذلك.
يعلن Appium Java Client عن تبعيات السيلينيوم باستخدام نطاق إصدار مفتوح يتم التعامل معه بشكل مختلف بواسطة أدوات إنشاء مختلفة. في بعض الأحيان قد يرغب المستخدمون في تثبيت تبعيات السيلينيوم المستخدمة لأسباب مختلفة. اتبع مقالة إدارة التبعيات المتعدية لمزيد من المعلومات حول إنشاء إصدار ثابت من السيلينيوم لإطار اختبار Java الخاص بك.
لدى عميل Appium java فئات مخصصة لدعم برامج تشغيل Appium التالية:
لأتمتة الأنظمة الأساسية الأخرى غير المذكورة أعلاه، يمكنك استخدام AppiumDriver أو مشتقاته المخصصة.
تم إنشاء عميل Appium java فوق السيلينيوم ويقوم بتنفيذ نفس الواجهات التي يستخدمها RemoteWebDriver الأساسي. ومع ذلك، يركز Selenium lib في الغالب على أتمتة متصفح الويب بينما Appium عالمي ويغطي مجموعة واسعة من الأنظمة الأساسية الممكنة، على سبيل المثال أنظمة تشغيل الأجهزة المحمولة وسطح المكتب وأجهزة IOT وما إلى ذلك. وبالتالي، فإن فئة AppiumDriver
الأساسية في هذه الحزمة تعمل على توسيع RemoteWebDriver
بميزات إضافية ، ويجعله أكثر مرونة، لذلك فهو لا يركز بشكل صارم على العمليات المتعلقة بمتصفح الويب.
يوفر عميل Appium Java فئة مخصصة للتحكم في تنفيذ خادم Appium. الفئة هي AppiumDriverLocalService. فهو يسمح بتشغيل خادم Appium والتحقق منه محليًا من خلال رمز إطار عمل الاختبار الخاص بك ويوفر العديد من الاختصارات الملائمة. يمكن استخدام الخدمة على النحو التالي:
AppiumDriverLocalService service = AppiumDriverLocalService . buildDefaultService ();
service . start ();
try {
// do stuff with drivers
} finally {
service . stop ();
}
يمكنك تخصيص سلوك الخدمة، على سبيل المثال، توفير وسائط سطر أوامر مخصصة أو تغيير المسارات إلى الملفات التنفيذية للخادم باستخدام AppiumServiceBuilder
ملحوظة
لا يدعم AppiumDriverLocalService إدارة الخادم على المضيفين غير المحليين
UiAutomator2Options options = new UiAutomator2Options ()
. setUdid ( "123456" )
. setApp ( "/home/myapp.apk" );
AndroidDriver driver = new AndroidDriver (
// The default URL in Appium 1 is http://127.0.0.1:4723/wd/hub
new URL ( "http://127.0.0.1:4723" ), options
);
try {
WebElement el = driver . findElement ( AppiumBy . xpath ( "//Button" ));
el . click ();
driver . getPageSource ();
} finally {
driver . quit ();
}
XCUITestOptions options = new XCUITestOptions ()
. setUdid ( "123456" )
. setApp ( "/home/myapp.ipa" );
IOSDriver driver = new IOSDriver (
// The default URL in Appium 1 is http://127.0.0.1:4723/wd/hub
new URL ( "http://127.0.0.1:4723" ), options
);
try {
WebElement el = driver . findElement ( AppiumBy . accessibilityId ( "myId" ));
el . click ();
driver . getPageSource ();
} finally {
driver . quit ();
}
BaseOptions options = new BaseOptions ()
. setPlatformName ( "myplatform" )
. setAutomationName ( "mydriver" )
. amend ( "mycapability1" , "capvalue1" )
. amend ( "mycapability2" , "capvalue2" );
AppiumDriver driver = new AppiumDriver (
// The default URL in Appium 1 is http://127.0.0.1:4723/wd/hub
new URL ( "http://127.0.0.1:4723" ), options
);
try {
WebElement el = driver . findElement ( AppiumBy . className ( "myClass" ));
el . click ();
driver . getPageSource ();
} finally {
driver . quit ();
}
تحقق من الملفات التمهيدية الخاصة ببرنامج التشغيل المقابل لمعرفة قائمة الإمكانات والميزات التي يدعمها.
يمكنك العثور على العديد من أمثلة التعليمات البرمجية عن طريق التحقق من وحدة العميل واختبارات التكامل.
يستخدم عميل Appium Java الوصول العاكس إلى الأعضاء الخاصين في الوحدات الأخرى لضمان الأداء السليم للعديد من الميزات، مثل نموذج كائن الصفحة. إذا حصلت على استثناء وقت التشغيل وكان InaccessibleObjectException
موجودًا في تتبع المكدس وكان وقت تشغيل Java لديك في الإصدار 16 أو أعلى، ففكر في برنامج Oracle التعليمي التالي و/أو التحقق من المشكلات الحالية بحثًا عن حلول محتملة. ستكون الفكرة هي السماح بشكل صريح بالوصول إلى وحدات معينة باستخدام وسيطات سطر الأوامر --add-exports/--add-opens
.
هناك حل آخر محتمل، ولكن لا يُنصح به بشكل جيد، وهو الرجوع إلى الإصدار 15 من Java أو أقل.
تحدث مثل هذه المشكلات عادةً عند بدء تشغيل خادم Appium مباشرة من رمز إطار العمل الخاص بك بدلاً من تشغيله بشكل منفصل بواسطة برنامج نصي أو يدويًا. اعتمادًا على طريقة بدء عملية الخادم، قد يرث أو لا يرث بيئة الصدفة النشطة حاليًا. ولهذا السبب قد تستمر في تلقي أخطاء حول وجود المتغيرات على الرغم من أن هذه المتغيرات محددة لمترجم سطر الأوامر الخاص بك. مرة أخرى، لا يوجد حل عالمي لذلك، حيث توجد طرق عديدة لبدء عملية خادم جديدة. خذ بعين الاعتبار التحقق من مستند استكشاف أخطاء بيئة Appium وإصلاحها للحصول على مزيد من المعلومات حول كيفية تصحيح مشكلات بيئة العملية وإصلاحها.
تفضل بزيارة CHANGELOG.md للاطلاع على القائمة الكاملة للتغييرات بين الإصدارات.
قم بإجراء اختبار باستخدام
gradle clean -Dtest.single=IOSAlertTest test