Appium 2.0 არის საკმაოდ დიდი ნაბიჯი მობილური აპლიკაციების ტესტირებაში. ბევრი საინტერესო ცვლილება გვაქვს და ასევე გზადაგზაც ბევრი ცვლილებებია მოსალოდნელი.
ახალი ვერსია ფოკუსირებულია ძველი ფუნქციების წაშლაზე, გაუმჯობესებების დამატებაზე და Appium-ის უფრო მძლავრად გახდომაზე.ჯონათან ლიპსმა ოფიციალურად დაარელიზა 2023 წლის 5 ივლისს Appium 2.0 ბეტა ვერსია რომელიც დღეს დღეობით უკვე მაღალი წარმადობით გამოიყენება. ამ პოსტში ვეცდები მოგაწოდოთ Appium Server-ში დანერგილ ძირითად ცვლილებებს 1.x-დან 2.x-მდე, ასევე Appium Client-ის მიგრაციას 7.x.x ვერსიიდან 8.x.x-მდე. თავად Appium 2.0-ის ინსტალაციის ინსტრუქციებისთვის მოგვიანებით მოვიცლი 🙂
Appium core გუნდი აღარ ახდენს ძირეულ აფდეითებს და განახლებს Appium 1.x-ზე 2022 წლის 1 იანვრიდან. ასევე მინდა გაითვალისწინოთ, რომ ოფიციალურად მხარდაჭერილი დრაივერების ყველა ბოლო ვერსია არ არის თავსებადი Appium 1.x-თან და საჭიროებს Appium 2-ის გასაშვებად. გთხოვთ, წაიკითხოთ მიგრაციის სახელმძღვანელო 1. x-დან 2.0-მდე.
ძირითადად appium 2.0 არის გადასული ფიჩერების განახლებებზე, განვითარებაზე და მოძველებული მეთოდების გაუქმებაზე.
ასე გამოიუყურება v1 და v2 ზე გადასვლა:
პროტოკოლის მხარდაჭერა:
Appium 1.x მხარს უჭერს “JSONWP” (JSON Wire Protocol) და ასევე “MJSONWP” (Mobile JSON Wire Protocol),
ისევე როგორც W3C WebDriver პროტოკოლს, რათა უზრუნველყოს თავსებადობა ძველ Selenium/Appium კლიენტებსა და ახალ Appium სერვერებს შორის.
ახლა კი Java კლიენტს აქვს Selenium 4-ს მხარდაჭერა, რაც იმას ნიშნავს, რომ იგი მკაცრად შეესაბამება W3C-ს სტანდარტს. აქედან გამომდინარე კი Appium 2.0- ასაპორტებს მხოლოდ W3C პროტოკოლს.
დრაივერის შექმნის შესაძლებლობების უზრუნველსაყოფად რეკომენდებული გზა არის BaseOptions კლასიდან მემკვიდრეობით მიღებული კონკრეტული ოფციონების შემქმნელების გამოყენება. მაგალითად, XCUITestOptions XCUITest დრაივერის მაგალითის შესაქმნელად ან UiAutomator2Options UiAutomator2 დრაივერის ინსტანციის შესაქმნელად.
2.x ვერსიებში დრაივერების გამოცხადებისთვის (capabilities) რეკომენდირებული გახდა BaseOptions კლასიდან builder ის გამოყენება. მაგალითად: XCUITestOptions -> XCUITest; UiAutomator2Options -> UiAutomator2;
აქამდე თუ ჩვენი კოდი გამოიყურებოდა ასე:
// Older approach: Java Client version 7.X.X
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, "Android Emulator");
capabilities.setCapability(MobileCapabilityType.NEW_COMMAND_TIMEOUT, 700000);
ახლა უკვე უნდა გამოიყურებოდეს ასე:
// From Appium Java Client version 8.0.0 Beta
UiAutomator2Options options = new UiAutomator2Options()
.setDeviceName("Android Emulator")
.setApp(System.getProperty("user.dir") + "/app.apk")
.eventTimings();
driver = new AndroidDriver(service.getUrl(), options);
Appium ძირითადი მისამართი:
Appium სერვერის საბაზისო მისამართი არის — ‘/’ (root)
Appium 1.x-ში იყო http://localhost:4723/wd/hub. ახლა კი ჩვენ შეგვიძლია წვდომა appium სერვერზე მხოლოდ IP მისამართით.
Appium 2.0 ითვალისწინებს აპპიუმს როგორც პლატფორმას სადაც უკვე მაქსიმალურად დამოუკიდებლად არის წარმოდგენილი „დრაივერები“ და „პლაგ(ჯ)ინები“, ადვილად შეიძლება მათი შექმნა და მართვა.
Appium დრაივერები:
Appium დრაივერები ახლა უკვე გამოყოფილია Appium სერვერისგან. Appium 1.x-ში ყველა დრაივერი ერთად იყო ინსტალირებული, რომელიც ინსტალირდებოდა აპიუმის ინსტალაციასთან ერთად. არ იყო საჭირო მათი ცალკე დამოუკიდებლად ჩამოტვირთვა/ინსტალაცია.
Appium 2.0-დან დაწყებული, დრაივერების დამოუკიდებლად ინსტალაცია/წაშლა ან განახლებაა შესაძლებელია. მაგალითად, არ მოგვიწევს თავად აპიუმის განახლების ლოდინი და შემდგომ მისი განახლება დრაივერების განახლების მიზნით. ჩვენ გვაქვს შესაძლებლობა უკვე განვაახლოთ დრაივერი მხოლოდ CLI ბრძანებების გამოყენებით.
appium driver install
Appium plugins:
Appium დანამატები არის დამატებითი მოდულები, რომლებიც შეიძლება ინტეგრირებული იყოს Appium მთავარ სერვერთან დამატებითი ფუნქციებისთვის, შესაძლებლობების გასაუმჯობესებლად ან კონკრეტული ტესტირების სცენარების მხარდასაჭერად.
Appium Plugins-ის ფუნქციის დანერგვა საბოლოო მომხმარებლებს სთავაზობს უფრო მეტ მოქნილობას. გარდა ამისა, მომხმარებლებს შეუძლიათ გამოაქვეყნონ ეს დანამატები პაკეტის მენეჯერისთვის, ანუ მარტივად შეგვიძლია გავუზიაროთ ნებისმიერს ესა თუ ის პლაგინი ზედმეტი ფაილების გარეშე.
ეს შესანიშნავი ფუნქცია საშუალებას გაძლევთ დააკონფიგურიროთ არსებული Appium ფუნქციები ან შექმნათ სრულიად თქვენზე მორგებული, კონკრეტული პროექტის საჭიროებებიდან გამომდინარე.
ამ ყველაფერთან ერთად ასევე აღსაღნიშნავია რამდენიმე plugin რომელსაც თავად აპიუმის გუნდი გვთავაზობს:
- Gestures Plugin:
ეს აპიუმის plugin იყენებს w3c სტანდარტს და TouchAction ანაცვლებს.მეტი ინფორმაციის ნახვა შესაძლებელია აქ - Appium Device Farm plugin:
– ავტომატურად აფიქსირებს მობილურ მოწყობილებობს რომელსაც მივაერთებს ჩვენს კომპიუტერს, როგორც რეალურ მოწყობილობებს ისე ემულატორებს. მათი ნახვა კი შეგვიძლია კონკრეტულ ლინკზე (მოწყობილობების ჩამონათვალი და მათი ინფო: localhost:4723/device-farm).
– ტესტირების დაწყებისას თავად ეძებს თავისუფალ მოწყობილობას რომელსზეც არ არის მიმდინარედ რაიმე სესია გაშვებული და სტარტავს.
– შესაძლებელია პარალელურადაც გაუშვათ ტესტები სხვა და სხვა დივაისებზე.
მეტი ინფორმაციისთვის მიყევით ბმულს - Wait Plugin:
ეს კი გამოიყენება ელემენტებთან სამუშაოდ (რაც implicitlywait გახდა მოძველებული მეთოდი) მას შემდეგ ეს არის ერთერთი საჭირო plugin დამატებითი ინფორმაციისთვის მიყევით ბმულს
Appium Desktop შეიცვალა Appium Inspector-ით:
Appium Desktop-ის ინსპექტორის ნაცვლად უკვე უნდა გამოვიყენოთ Appium Inspector. ის სრულად თავსებადია Appium 2.0 სერვერებთან, მაგრამ ასევე მუშაობს Appium 1.x ვერსიებთან, თავად Appium Desktop მოძველებულია და არ არის თავსებადი Appium 2.0-თან.
Appium აპის გარდა, Appium Inspector-ს ასევე აქვს ბრაუზერის ვერსია, რომელიც ხელმისაწვდომია https://inspector.appiumpro.com-ზე. გაითვალისწინეთ, რომ ბრაუზერის ვერსიის Appium სერვერთან გამოსაყენებლად, ჯერ სერვერის დასტარტვისას დაგჭირდებათ — allow-cors პარამეტრიც.
ასევე გასათვალისწინებელი ცვლილებებია
– All findBy* მეთოდები (მაგალითად: findElementById, findElementByClassName, findElementByLinkText,…) წაშლილია.
-გამოიყენეთ მხოლოდ findElement[s](By. ან AppiumBy.)
– MobileBy კლასიც გახდა მოძველებული.
მოძველებული მეთოდები:
Touch Actions: TouchAction და MultiTouchAction კლასები (AndroidTouchActions, iOSTouchActions) მოძველებულია. ახლა გამოიყენეთ W3C რაც ზემოთ უკვე ვახსენეთ.
Appium Driver-ის მეთოდები: AppiumDriver-ის მეთოდები resetApp, launchApp და closeup ასევე მოძველებულია.
ასევე არ დაივიწყოთ Appium Java Client-ის განახლება 🙂
მეტი ინფორმაციისთვის კი ეწვიეთ ბმულებს:
https://appium.io/docs/en/2.0/intro/
https://appium.io/docs/en/2.0/guides/migrating-1-to-2/