Android

최신 ChromeDriver용 바이너리는 다양한 호스트 플랫폼용 zip 파일로 패키징됩니다.

이전 버전의 ChromeDriver는 다운로드에서 확인할 수 있습니다.

지원되는 앱

ChromeDriver는 Chrome 브라우저 (버전 30 이상) 및 웹 디버깅JavaScript를 사용 설정한 Android 4.4 (KitKat)부터 WebView 기반 앱에서 테스트 실행을 지원합니다.

다음 위치에서 Chrome 앱을 설치할 수 있습니다.

안정화 버전: https://play.google.com/store/apps/details?id=com.android.chrome

Selenium WebDriver 언어 바인딩

테스트를 작성하려면 선택한 언어에 맞게 표준 Selenium 프로젝트 WebDriver 언어 바인딩을 설치해야 합니다. 이 라이브러리는 로컬 패키지 관리자 또는 Selenium 프로젝트에서 사용할 수 있습니다.

예를 들어 Python의 언어 바인딩은 pip를 사용하여 설치할 수 있습니다.

$ pip install selenium

Android SDK

SDK는 developer.android.com/sdk/에서 다운로드할 수 있습니다.

기기 요구사항

Chrome 버전 33부터 루팅된 기기가 필요하지 않습니다. 이전 버전의 Chrome에서 테스트를 실행하는 경우 ChromeDriver가 Chrome의 명령줄 인수를 설정하려면 /data/local 디렉터리에 대한 쓰기 액세스 권한이 필요하므로 기기를 루팅해야 합니다.

ChromeDriver 실행

  1. Android SDK의 Android 디버그 브리지 (adb) 서버를 시작합니다.

    $ adb start-server
    
  2. 버전 33 이전의 Chrome 앱에서 테스트하는 경우 adb 셸에 기기의 /data/local 디렉터리에 대한 읽기 및 쓰기 액세스 권한이 있는지 확인합니다.

    $ adb shell su -c chmod 777 /data/local
    
  3. Selenium 라이브러리를 통해 ChromeDriver를 시작하는 것이 좋지만 명령줄에서 수동으로 시작할 수도 있습니다.

    $ ./chromedriver
    

Android 전용 옵션

다음 Chrome 옵션은 Chrome 및 WebView 앱 모두에 적용됩니다.

  • androidPackage: Chrome 또는 WebView 앱의 패키지 이름입니다.
  • androidDeviceSerial: (선택사항) 앱을 실행할 기기 일련번호입니다 (아래의 여러 기기 섹션 참고).
  • androidUseRunningApp: (선택사항) 데이터 디렉터리가 지워진 상태로 앱을 실행하는 대신 이미 실행 중인 앱에 연결합니다.

다음 기능은 WebView 앱에만 적용됩니다.

  • androidActivity: WebView를 호스팅하는 Activity의 이름입니다.
  • androidProcess: (선택사항) WebView를 호스팅하는 Activity의 프로세스 이름 (ps에서 제공)입니다. 지정하지 않으면 프로세스 이름이 androidPackage와 동일한 것으로 간주됩니다.

테스트 실행

테스트는 androidPackage 옵션을 통해 앱의 패키지 이름을 ChromeDriver에 전달해야 합니다. 예를 들어 최소 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 옵션으로 지정합니다.

일련번호가 지정되지 않은 경우 서버는 각 세션과 연결할 사용되지 않는 기기를 무작위로 선택합니다. 모든 기기에 이미 활성 세션이 있는 경우 오류가 반환되므로 테스트는 완료 시 quit을 호출해야 합니다.

wd/hub에 연결

테스트에서 wd/hub에 연결할 것으로 예상되는 경우 서버를 실행할 때 --url-base=wd/hub를 추가할 수 있습니다.

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