feature-image-appium-android-tutorials
feature-image-appium-android-tutorials

ถึงเวลามาลงมือใช้งาน Appium กันจริงๆดีกว่า หลังจากบทความที่แล้วเข้าใจว่า Appium คืออะไร? ทีนี้ถึงเวลาลงมือทําจริงๆละ ซึ่งวันนี้เราจะมาเรียนรู้กันดังนี้ รับรองได้ใช้งานจริงแน่ๆ

  • How To Run Appium Script
  • Desired Capabilities คืออะไร? Appium คุยกับ Script ผ่านอะไร?
  • Chrome Remote Debugging ใช้ยังไง? แล้วทําไมต้องใช้?
  • Robot Framework Appium Library

How To Run Appium Script!

อย่างที่เรารู้กันว่า Appium ถูกออกแบบมาให้เป็นแบบ Server & Client โดย Appium จะทําหน้าที่เป็น Server ติดต่อกับ Device ที่เราต้องการจะทําเทสนั่นเอง ซึ่งสิ่งที่เราต้องเตรียมในการทําเทสมีสิ่งเล็กน้อยมากๆ คือแค่ 4 อย่างนี้เอง (หรือจะว่าดู Appium Prerequisite ที่นี้)

  1. Android
  2. UIAutomatorviewer
  3. Appium Desktop For Window

Android 

เปิดเจ้าตัว Android SDK Manager แล้วก็ลง Build Tools ,HAXM กับ Android API version ต่างๆลงไป ที่เราจะใช้งานลงไป (ไม่สอนวิธีลงนะง่ายเกิ๊น)

UIAutomatorviewer

เป็นส่วนสําคัญมากในการทํา automation testing เพราะว่ามันคือตัว inspector ของเรา ที่ไว้ใช้ในการพัฒนาสิ่งต่างๆ เช่น เราต้องการหา Locator ต่างๆนั้นเอง

ซึ่งไม่ต้องลงไรเพิ่มแค่ไปหาจาก Path


C:\Users\<username>\AppData\Local\Android\sdk\tools #จะมีอยู่แล้วเมื่อตอนเราลง SDK

Appium Desktop For Window 

ตัวหลักเลยในการเชื่อมต่อกับ Application ที่ต้องการจะเทส โหลดได้จาก Bitbucket เลย


เมื่อเรามีครบ 3 อย่างนี้ ก็พร้อมที่จะทํางานล่ะ สมมุติว่าเรามี automation script ถ้าไม่มีแนะนําให้ใช้ repository ที่นี้ ในการเริ่มต้น ที่จะทํางานพร้อมอยู่แล้วน่ะ เราก็แค่ไป

  1. เปิด Android Emulator ขึ้นมาด้วย AVD ซึ่ง Path จะอยู่ที่ SDK
  2. เปิด Appium for window ขึ้นมาเพื่อ Link APK เข้า Appium และ
  3. กด run เพื่อให้ Appium server มันทํางานทิ้งไว้
  4. สมมุติว่าเรา Clone repository ที่นี้ ลงมา ให้เข้าไปที่โฟลเดอร์ demo และสั่ง pybot กับ test_android_contacts.txt เพื่อเป็นการให้งานมันทํางาน

เพียงแค่นี้การทดลองรันครั้งแรกกับ Appium ได้แล้ว!!!! ถ้าเป็น Sciprts ของเราเองก็ไม่แตกต่างกัน เพียงแค่เปลี่ยนจาก Repository ที่เป็นตัวอย่างเปลี่ยนเป็นของตัวเองเท่านั้นเอง และ connect emulator ให้พร้อมลุยยยยย

Noted:

วิธีเช็คว่า Emulator หรือ real device เราพร้อมใช้งานหรือยังให้เปิด cmd

พิมย์ adb devices

ถ้าไม่มีอะไรขึ้นมาหรือ error แสดงว่าเรา set path ไม่ถูกต้อง ไม่ก็ device มีปัญหาละ

และอีก Option นึงที่น่าสนใจก็คือ

  • Full Reset/ No reset หมายถึงให้ลงแอพใหม่ทุกครั้งหรือไม่ เวลารัน Automation testing

Desired Capabilities คืออะไร? Appium คุยกับ Script ผ่านอะไร?

จริงๆมันก็ดูรันได้ดีแหละ เมื่อทําตาม Tutorial แต่จริงๆแล้ว เราต้องเข้าใจหัวใจหลักของ Appium เลยว่ามันคุยกับ Scripts ที่เราเขียนขึ้นมาได้อย่างไร ซึ่งสิ่งที่จําเป็นต้องรู้หลักๆเลยก็คือ

  1. Url และ Port ของ Appium Server ที่เราจะใช้งาน
  2. Desired Capabilities

Url และ Port ของ Appium Server ที่เราจะใช้งาน

อย่างที่เคยเล่าให้ฟังว่า Appium มันเป็น Server – Client Architecture ดังนั้นแปลว่า มันต้องมีการเรียกจาก Client ไป server นั่นเอง สิ่งที่เราต้องรู้หลักๆลยก็คือ

จะเห็นว่า โดย default แล้วมันจะชี้ไปที่ 127.0.0.1 port 4723 ซึ่งถ้าใครไม่อยากแก้ไขก็ไม่ต้องทําอะไรเพิ่ม ในโค้ดของเราก็จะมาเรียกที่นี้นั่นเองง่ายๆ แล้วจาก appium server มันก็จะส่งข้อมูลไปหา device ที่เราจะทําการเทสนั้นเอง ไม่ว่าจะเป็น real device หรือ emulator

Desired Capabilities

ตัวนี้สิน่าสนใจว่ามันคืออะไร? เพราะมันเป็นหัวใจหลักเลย เวลาที่จะคุยกับ server นั่นเอง script ที่ไม่มี Desired Capabilities ก็คุยกับ Server ไม่ได้เลยละ

สิ่งหลักๆที่มันทําก็คือ Session ที่เรากําลังจะสร้างขี้นมาเนี่ยเป็น Session แบบไหน? Platform อะไร? Android? IOS? หรือ platform name อะไรเป็นต้น? ซึ่งถ้าไม่มีส่วนนี้ Appium Server จะไม่รู้ว่าคืออะไรเลย และทําให้สร้าง session ระหว่าง Client กับ Server ไม่ได้

Desired Capabilites หลักดูได้จากที่นี้

นี้คือตัวอย่างว่ามันเอาไปใช้ยังไง หรือจะไปดูจากใน repository ที่ clone ลงมาก็ได้

Chrome Remote Debugging ใช้ยังไง? แล้วทําไมต้องใช้?

จริงๆแล้วอย่างที่บอกถ้าเราใช้ UIautomatorviewer เราก็สามารถ debug ได้ โดนการหา Locator หรือ ID เอามช้งานได้ แต่ๆๆๆๆๆก่อนที่เราจะใช้แบบนั้น เราต้องเข้าใจเรื่อง Application ที่ต้องการจะเทสก่อน ซึ่ง ณ เวลาที่เขียนเนี้ยมันมีอยู่ 3 แบบคือ

  1. Native = ทุกอย่างเขียนจาก Native เลย เขียน xml files ดื้อๆ
  2. Web App = ตัวเทพคือ Cordova (Phonegap) ในอดีตนั่นเอง ใช้ Web App แล้วเรนเดอร์ด้วย Webview นั่นเอง
  3. Hybrid = ครึ่ง Native ครึ่ง Web App เช่น อาจจะมี Native ส่วนใหญ่ แต่เอา Web App มาแปะไว้ครึ่งหน้า แบบนั้นเป็นต้น

ที่นี้มันเกี่ยวข้องอะไรกับเรา??? เกี่ยวสิ เพราะเวลา Debug เนี่ย ปัญหาใหญ่สุดคือเรื่อง ไล่ Log หรือ Element นั่นเอง ซึ่งการไล่แบบนั้น ถ้าเป็น Web App จะไม่สามารถทําได้ เพราะมันจะเจอชื่อ Elment แปลกๆแทน และยากต่อการดึงค่ามาใช้

เพราะฉะนั้นถ้าเป็น Cordova อยากให้ใช้ Chrome Remote Debugging เทคนิคดีกว่า ซึ่งวิธีใช้ไม่ได้ยากเลย เพียงแค่ connect Emulator หรือ real device ไว้กับ คอมที่จะทํางาน แล้วเปิด google chrome ไปที่ url นี้

chrome://inspect/device

เจ้าตัวเนี้ยมันจะบอกเลยว่ามีอะไรที่ connect เข้ากับคอมเราอยู่ ซึ่งมันจะมีหน้าตาคล้ายๆงี้ เมื่อเราเสียบเข้ากันแล้ว

ปิดชื่อแอพนิดนึง มันไม่ดี ฮ๋าๆๆๆ 🙂

เพียงแค่นี้เราก็สามารถ กด inspect แล้วก็ดูโค้ดเหมือน debugging ใน chrome desktop ได้ตามปกติแล้ววว

Noted:

ในบางกรณีที่เป็นแอพแบบ Hybrid หรือ WebApp เราจําเป็นต้องมีการ Switch Context ให้เป็นตัวที่เราต้องการจะเทส เช่น เราต้องการจะเทส Web App แต่อยู่บน Native ก็ทํางานไม่ได้ เพราะฉะนั้นเราต้องใช้คํษสั่ง

AppiumLibrary.Switch To Context <Native/WebView>

ซึ่งโดยปกติแล้ว Context จะอยู่ในรูปแบบของ

  • NATIVE_APP
  • WEBVIEW_ชื่อ Package ของเรา

ซึ่งเราสามารถสั่ง Switch To Context WEBVIEW / NATIVE สั้นๆแค่นี้เลยก็ได้ ไม่ต้อง Full name แต่แค่ยกตัวอย่างให้รู้ไว้เฉยๆ

Robot Framework Appium Library

นอกจากเรียนรู้เรื่องทั่วไปของการเชื่อมต่อระหว่าง Appium กับ devices แล้ว เราก็ต้องเข้าไปอ่าน Keyword ต่างๆของ Robot Framework ที่ wrap appium client ไว้ให้เรา ที่นี้เลย Keyword Documentation

หลักๆของการใช้ Keyword ก็จะมี Steps ดังนี้

  1. Open Application (Suite Setup)
  2. Interact with element in Native App/Hybrid App
    • จุดนี้สําคัญเพราะในบาง Scenario จะมีการ Switch To Context ไปมา เช่น ตอนแรกเล่นในแอพเราอยู่ แล้วอยู่ดีๆก็เปิด facebook เป็นต้น
    • หรือบาง devices หรือ เราไม่มีปุ่ม back ในแอพ ทําให้เราต้องใช้ back button แทน เราก็ต้องใช้พวก Press Keycode ส่งเข้าไปนั้นเองง โดยเราก็ต้องไปค้น key ของมันในนี้ KeyEvent
    • หรือบางทีเราต้อง install/uninstall application ที่เกี่ยวข้องเพื่อ test scene นั้นๆ เราก็ต้องใช้ Remove Application แล้วก็ต้องใช้ command line เพื่อส่ง คําสั่ง Install apk ผ่าน Keyword Run Process ในระหว่างที่ทําเทสด้วย
    • จะเห็นได้ว่าเนี่ยมันมีขั้นตอนเยอะมากๆๆๆ ยิบย่อยลงไปอีกเยอะแยะ ต้องค่อยๆเล่น ส่วนจะทําได้บน Android เนี่ยแหละ เพราะมัน open กว่า iOS
  3. Close All Application (Suite Teardown)

สรุป

จริงๆแล้วการใช้งาน Appium ไม่ได้ยากเลย เพียงแค่ต้องรู้จุดสําคัญหลักๆที่อธิบายไปแล้วแค่นั้นเองว่าต้อง Provide อะไรให้มันบ้าง ที่เหลือก็แค่ลงลึกทีล่ะจุดๆๆไปละ ตาม Keyword Documentation

ส่วนเทคนิค Chrome Remote Debugging น่าสนใจที่จะลองใช้ มันช่วยได้เยอะเลย ลองเอาไปใช้กันน่ะ

update 22/1/2018

สามารถโหลดไปลองเล่นกันได้ที่นี้เลย Appium Android Example

Leave a Reply

avatar

This site uses Akismet to reduce spam. Learn how your comment data is processed.