Android

การอ้างอิง

คุณจะเห็นไบนารีสำหรับ ChromeDriver รวมอยู่ในแพ็กเกจเป็นไฟล์ ZIP สำหรับแพลตฟอร์มโฮสต์ต่างๆ ในหน้าดาวน์โหลด

แอปที่รองรับ

ChromeDriver สนับสนุนการทดสอบในเบราว์เซอร์ Chrome (เวอร์ชัน 30 ขึ้นไป) และแอปแบบ WebView ที่เริ่มตั้งแต่ Android 4.4 (KitKat) ที่เปิดใช้การแก้ไขข้อบกพร่องของเว็บและ JavaScript คุณติดตั้งแอป Chrome ได้จากช่องทางต่อไปนี้

เวอร์ชันเสถียร: https://play.google.com/store/apps/details?id=com.android.chrome

การเชื่อมโยงภาษาของ Selenium WebDriver

ต้องติดตั้งการเชื่อมโยงภาษา WebDriver ของโครงการซีลีเนียมแบบมาตรฐานสำหรับภาษาที่คุณเลือกใช้ในการเขียนการทดสอบ ไลบรารีนี้พร้อมให้ดาวน์โหลดได้จากผู้จัดการแพ็กเกจในพื้นที่ที่เป็นมิตรของคุณหรือโปรเจ็กต์ ซีลีเนียม (https://www.seleniumhq.org/download/) เช่น ติดตั้งการเชื่อมโยงภาษาสำหรับ Python ได้ด้วย PIP

$ pip install selenium

Android SDK

คุณสามารถดาวน์โหลด SDK ได้ที่ developer.android.com/sdk/

ข้อกำหนดของอุปกรณ์

ตั้งแต่ Chrome เวอร์ชัน 33 คุณไม่จำเป็นต้องมีอุปกรณ์ที่รูทอีกต่อไป หากทำการทดสอบใน Chrome เวอร์ชันต่ำกว่า อุปกรณ์ต้องรูทเนื่องจาก ChromeDriver ต้องใช้สิทธิ์เขียนไดเรกทอรี /data/local เพื่อตั้งค่าอาร์กิวเมนต์บรรทัดคำสั่งของ Chrome

เรียกใช้ ChromeDriver

  1. เริ่มต้นเซิร์ฟเวอร์ Android Debug Bridge (adb) ของ Android SDK ดังนี้

    $ adb start-server
    
  2. หากทดสอบในแอป Chrome ก่อนเวอร์ชัน 33 ให้ตรวจสอบว่า adb Shell มีสิทธิ์อ่าน/เขียนไดเรกทอรี /data/local ในอุปกรณ์

     $ adb shell su -c chmod 777 /data/local
    
  3. โดยทั่วไป เราขอแนะนำให้คุณเริ่มต้น ChromeDriver ผ่านไลบรารี Selenium ซึ่งคุณสามารถเริ่มต้นด้วยตนเองจากบรรทัดคำสั่งได้เช่นกัน โปรดดูที่ เริ่มต้นใช้งาน เพื่อดูข้อมูลเพิ่มเติม

    $ ./chromedriver
    

ตัวเลือกสำหรับ Android โดยเฉพาะ

ตัวเลือก Chrome ต่อไปนี้ใช้ได้กับทั้งแอป Chrome และ WebView

  • androidPackage: ชื่อแพ็กเกจของแอป Chrome หรือ WebView
  • androidDeviceSerial: (ไม่บังคับ) หมายเลขซีเรียลของอุปกรณ์ที่จะใช้เปิดแอป (ดูส่วน "อุปกรณ์หลายเครื่อง" ที่ด้านล่าง)
  • androidUseRunningApp: (ไม่บังคับ) แนบแอปที่ทำงานอยู่แล้วแทนการเปิดแอปด้วยไดเรกทอรีข้อมูลที่ชัดเจน

ความสามารถต่อไปนี้ใช้ได้กับแอป WebView เท่านั้น

  • androidActivity: ชื่อของกิจกรรมที่โฮสต์ WebView
  • androidProcess: (ไม่บังคับ) ชื่อกระบวนการของกิจกรรมที่โฮสต์ WebView (ตามที่ระบุโดย ps) หากไม่ได้ระบุไว้ ระบบจะถือว่าชื่อกระบวนการเป็นชื่อเดียวกับ androidPackage

ทำการทดสอบ

การทดสอบควรส่งชื่อแพ็กเกจของแอปไปยัง ChromeDriver ผ่านตัวเลือก androidPackage เช่น การทดสอบ Python ขั้นต่ำจะมีลักษณะดังนี้

from selenium import webdriver
options = webdriver.ChromeOptions()
options.add_experimental_option('androidPackage', 'com.android.chrome')
driver = webdriver.Chrome('./chromedriver', options=options)
driver.get('https://google.com')
driver.quit()

อุปกรณ์หลายเครื่อง

หากต้องการใช้อุปกรณ์ใดโดยเฉพาะสำหรับเซสชัน ให้ระบุ androidDeviceSerial เป็นตัวเลือกของ Chrome

หากไม่ได้ระบุหมายเลขซีเรียล เซิร์ฟเวอร์จะเลือกอุปกรณ์ที่ไม่ได้ใช้งานแบบสุ่มเพื่อเชื่อมโยงกับแต่ละเซสชัน ระบบจะแสดงข้อผิดพลาดหากอุปกรณ์ทั้งหมดมีเซสชันที่ใช้งานอยู่อยู่แล้ว ดังนั้นการทดสอบควรดูให้แน่ใจว่ามีการปิดการเรียกเมื่อเสร็จสิ้น

เชื่อมต่อกับ wd/hub

หากการทดสอบคาดว่าจะเชื่อมต่อกับ wd/hub คุณจะเพิ่ม --url-base=wd/hub เมื่อเปิดเซิร์ฟเวอร์ได้โดยทำดังนี้

$ ./chromedriver --url-base=wd/hub