Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I use selenium or appium to automate chrome browser on android?

I am trying to automate the android Chrome browser on an android device (not just a webview or another browser, but Chrome browser). I thought this was possible by following this link https://sites.google.com/a/chromium.org/chromedriver/getting-started/getting-started---android but it automates my pc chrome browser instead.

I also tried Appium, but nothing happens after the log:

debug: executing: adb install C:\Users\hidden\Downloads\AppiumForWindows-0.14.2\
Appium\node_modules\appium\build\unlock_apk\unlock_apk-debug.apk

And when I try to access info from the browser, I get this:

info: Responding to client with error: {"status":13,"value":{"message":"An unkno
wn server-side error occurred while processing the command.","origValue":"Did no
t successfully proxy server command"},"sessionId":"666c9e4f-7653-487a-b299-959d4
000ca79"}

I do have chromedriver.exe in my environment variable PATH, the whole log looks like this:

info: Welcome to Appium v0.14.2
info: Appium REST http interface listener started on 127.0.0.1:5555
   info  - socket.io started
debug: Appium request initiated at /wd/hub/session
debug: Request received with params: {"desiredCapabilities":{"platform":"ANDROID
","app":"chrome","browserName":"android","browserConnectionEnabled":true,"app-pa
ckage":"com.android.chrome","device":"android","rotatable":true,"app-activity":"
com.google.android.apps.chrome.Main","takesScreenshot":true,"version":""}}
info: Looks like we want chrome on android
info: Creating new appium session 666c9e4f-7653-487a-b299-959d4000ca79
info: Ensuring Chromedriver exists
debug: Pushing unlock helper app to device...
debug: executing: adb install C:\Users\hidden\Downloads\AppiumForWindows-0.14.2\
Appium\node_modules\appium\build\unlock_apk\unlock_apk-debug.apk
warn:  killed=false, code=1, signal=null
debug: Appium request initiated at /wd/hub/status
debug: Request received with params: {}
debug: Proxying command to 127.0.0.1:9515
info: Making http request with opts: {"url":"http://127.0.0.1:9515/wd/hub/status
","method":"GET"}
info: Responding to client with error: {"status":13,"value":{"message":"An unkno
wn server-side error occurred while processing the command.","origValue":"Did no
t successfully proxy server command"},"sessionId":"666c9e4f-7653-487a-b299-959d4
000ca79"}
GET /wd/hub/status 500 1014ms - 238b
POST /wd/hub/session 200 31311ms

Thank you.

like image 627
Juan Acevedo Avatar asked Jan 29 '14 00:01

Juan Acevedo


People also ask

Can I use Selenium on Android?

Can Selenium be used for Android Testing? Selenium can be used for automated testing of websites on a wide range of Android devices. Android Testing with Selenium is absolutely mandatory for Android developers and QAs because every website must be able to function perfectly on all Android devices.

Will Appium work for mobile browser automation?

In a nutshell, Appium is a mobile test automation framework (with a tool) that works for all: native, hybrid and mobile web apps for iOS and Android.

What mobile browser can you automate in the Android emulator?

Appium supports automating the Chrome browser both real and emulated Android devices. Pre-requisites: Make sure Chrome is installed on your device or emulator. Chromedriver needs to be installed (a default version comes with Appium) and configured for automating the specific version of Chrome available on the device.


1 Answers

debug: executing: adb install C:\Users\hidden\Downloads\AppiumForWindows-0.14.2\ Appium\node_modules\appium\build\unlock_apk\unlock_apk-debug.apk

If nothing is happening here, then you must restart your ARM emulator and the appium server/chromedriver again. I came across this multiple times and noticed many a times adb shuts down and looses connectivity. If I restart abd, everything starts working. This is just a adb command to install the apk, it should take time depending on the size of the apk but not much.

public static void main(String[] args) throws MalformedURLException{
    DesiredCapabilities  capabilities = new DesiredCapabilities();
    capabilities.setCapability("device","Android");
    capabilities.setCapability("app", "Chrome");
    capabilities.setCapability(CapabilityType.BROWSER_NAME, "");
    capabilities.setCapability(CapabilityType.VERSION, "4.3");
    capabilities.setCapability(CapabilityType.PLATFORM, "WINDOWS");
    WebDriver driver = new RemoteWebDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
    driver.get("http://www.yahoo.com");
}

I have this piece of code which runs well on appium automating the android chrome browser. In the above log, you chromedriver has not started successfully and so the browser is not automated. I have appium log which is automating the chrome browser: enter image description here Also, every combination of ChromeDriver and Chrome APK is not working. I have been struggling this since days and found out that: Chrome Driver 2.3 and Chrome APK 29.xxx are compatible. Chrome Driver 2.9/2.8 and Chrome APK 30.xx or 31.xx are not working.

Regarding Just ChromeDriver: The chromium link you mentioned will automate the PC browser if you have not set the capability. Something like this:

DesiredCapabilities capabilities=new DesiredCapabilities();//DesiredCapabilities.chrome();
    ChromeOptions options=new ChromeOptions();
    options.setExperimentalOptions("androidPackage", "com.android.chrome");
    capabilities.setCapability(ChromeOptions.CAPABILITY, options);

You have to set this capability incase you are just using chromedriver (and not appium). I am working on this but could not find the capability. Also you will have to start the ChromDriver by yourself on command promt which will listen at 9515 port for any automation.

like image 108
Khushboo Avatar answered Oct 26 '22 05:10

Khushboo