Chrome Automated on PC & Mobile
หากว่า เราจะทำการทดสอบโดยใช้ Robot Framework เปิด Browser Chrome ทั้ง pc และ mobile ในการทดสอบบน Windows โดยที่เราต้องการใช้ Selenium ในการเปิดบน pc และ ใช้ Appium ในการเปิดบน mobile แต่ทว่า code ที่เราใช้ทดสอบนั้นต่างกันเลยทั้งที่การทดสอบเหมือนกัน
จะเห็นว่าการเข้า url : http://google.com วิธีเข้าจะต่างกันมาก ซึ่งทำให้มันยุ่งยาก เพราะว่า เราต้องใช้ locator ของ android ในการระบุ แต่ว่าจริงๆแล้ว Appium นั้นยังมีวิธี Switch To Context แต่เราจะมาอธิบายเพิ่มหลังจากนี้
แล้วเราควรใช้อะไรดีละ ?
Create Web Driver นั่นเอง!!!
Create Web Driver จะคล้ายกับคำสั่ง Open Browser แต่ตัว Create Web Driver นั้นสามารถส่งค่า arguments ไปยัง Web Driver instance ที่สร้างขึ้นมาได้ และต้องกำหนด driver_name เป็นชื่อการใช้ Web Driver มาถึงตรงนี้แล้ว หากงงมาดูตัวอย่าง Script กันเลยดีกว่า
ตัวอย่างการใช้งาน
เราจะทำการเปิด google chrome เข้าเว็บ http://google.com ค้นหาคำว่า exoplayer kotlin android github จากนั้นเข้า link ที่สอง โดยจะเปิดทั้ง Windows และ Android
จะเห็นได้ว่า test case ทั้งสองนั้น code เดียวกันหมดเลย ต่างกันแค่ตอน Create Web Driver แค่นั่นเอง ซึ่งตรงส่วนนี้ จะมีความแตกต่างกันตรงที่ว่าของ mobile จะมีการกำหนด capabilities เพื่อระบุว่าเปิดผ่าน androidPackage
capabilities = {
'chromeOptions': {
'androidPackage': 'com.android.chrome',
}
}
ในส่วนของการสร้าง hub ของ Selenium command_executor=http://192.168.230.1:4444/wd/hub การสามารถดูเพิ่มได้จาก link นี้ได้เลย :)
เพิ่มเติม
Appium ยังมีอีกวิธีคือการทำ Switch To Context จะทำการสลับ context อย่างเช่น Application Chrome จะมี context ที่เป็น Native กับ WebView เราสามารถสลับ context ไปมาได้ ซึ่งวิธีนี้จะต่างกับวิธีที่ใช้ locator ของ android แต่วิธีที่สลับ context ไปยัง web view จะสามารถใช้ locator ของ web ได้เลย
จากในรูปจะเป็นการสลับ context จาก Native_App เป็น WEBVIEW_chrome ทำให้สามารถใช้งาน XPath ในรูปแบบของ Web ได้เลย
สรุป
การใช้งาน Create Web Driver ช่วยทำให้สามารถทดสอบการใช้ Chrome ได้ทั้งสองแพลตฟอร์มไม่ว่าจะเป็นทางฝั่ง Windows หรือ Android ทำให้สามารถ reuse code ได้ ลดการทำงานซ้ำซ้อนเกินความจำเป็นออกไป
ดังนั้นอย่าลืมนำไปใช้งานกันนะครับผม ครั้งหน้าบทความต่อไปจะเป็นอะไร ก็อย่าลืมติดตามรับชมกันได้ครับผม
ตัวอย่าง code ทั้งสามอยู่ที่ Github เข้าไปดูกันได้นะครับ
Reference Website :