web-dev-qa-db-ja.com

Seleniumまたはappiumを使用してAndroidのchromeブラウザを自動化するにはどうすればよいですか?

Android ChromeブラウザをAndroidデバイス(Webビューや別のブラウザだけでなく、別のブラウザで自動化しようとしています。 Chromeブラウザ)。これは、このリンクをたどることで可能だと思いました https://sites.google.com/a/chromium.org/chromedriver/getting-started/getting-開始--- Android しかし、代わりに私のpc chromeブラウザを自動化します。

Appiumも試しましたが、ログの後に何も起こりません。

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

そして、ブラウザから情報にアクセスしようとすると、次のようになります。

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"}

環境変数PATHにchromedriver.exeがありますが、ログ全体は次のようになります。

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

ありがとうございました。

9
Juan Acevedo

デバッグ:実行中:adb install C:\ Users\hidden\Downloads\AppiumForWindows-0.14.2\Appium\node_modules\appium\build\unlock_apk\unlock_apk-debug.apk

ここで何も起こらない場合は、ARMエミュレーターとappiumサーバー/ chromedriverを再起動する必要があります。これに何度も遭遇し、adbがシャットダウンして接続が失われることに何度も気づきました。 abdを再起動すると、すべてが機能し始めます。これは、apkをインストールするためのadbコマンドです。apkのサイズによっては時間がかかりますが、それほど時間はかかりません。

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");
}

Android chromeブラウザを自動化するappiumでうまく実行されるこのコードがあります。上記のログでは、chromedriverが正常に起動していないため、ブラウザが正常に起動していません。自動化されていません。chromeブラウザ:を自動化するappiumログがあります。 enter image description here また、ChromeDriverとChrome APKのすべての組み合わせが機能していません。私は何日もこれに苦労していて、次のことを発見しました:Chrome Driver 2.3 and Chrome APK29.xxxは互換性があります。Chromeドライバー2.9/2.8およびChrome APK30.xxまたは31.xxが機能していません。

ちょうどChromeDriverについて:あなたが機能を設定していない場合、あなたが言及したクロムリンクはPCブラウザを自動化します。このようなもの:

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

(appiumではなく)chromedriverを使用している場合は、この機能を設定する必要があります。私はこれに取り組んでいますが、機能を見つけることができませんでした。また、自動化のために9515ポートでリッスンするコマンドプロンプトで自分でChromDriverを起動する必要があります。

9
Khushboo

1)appiumログを読んで、chromeドライバーのバージョンを参照しています。2)最新のchromedriverバージョンをオンラインで確認します。今日の時点で最新バージョンは2.23です。これをWindows用にダウンロードして解凍します http://chromedriver.storage.googleapis.com/index.html?path=2.23/ 3)Appiumをアップグレードします(本日最新-1.4.16.1)次に、この場所に移動します。 C:\ Program Files(x86)\ Appium\node_modules\appium\node_modules\appium-chromedriver\chromedriver\win

そして、ここにchromedriver.exeを貼り付けます(古いものを置き換えます)

4)

    public AndroidDriver<AndroidElement> startChrome() {
        DesiredCapabilities capabilities = new DesiredCapabilities();

        capabilities.setCapability("deviceName", "AndroidDevice");
        capabilities.setCapability("newCommandTimeout", 180);
        capabilities.setCapability("appActivity", "com.google.Android.apps.chrome.Main");

        try {
            driver = new AndroidDriver<>(new URL(appiumURL), capabilities);
driver.get("google.com")
        } catch (MalformedURLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }       return driver;
    }

5)これが機能しない場合は、更新されたchrome version)を指している場合は、必ずappiumログをチェックインしてください。

1
Gloria Rampur

私はこのようにセットアップしました、そしてこれは完全に働いています。

      String appium_node = ("http://0.0.0.0:4723/wd/hub");

    //Set the Desired Capabilities
    DesiredCapabilities caps = new DesiredCapabilities();
    caps.setCapability("deviceName", "Mi Android Phone");
    caps.setCapability("udid", "ba689af30404"); //Give Device ID of your mobile phone
    caps.setCapability("platformName", "Android");
    caps.setCapability("platformVersion", "8.1.0");
    caps.setCapability("browserName", "Chrome");
    caps.setCapability("noReset", true);
    caps.setCapability("unicodekeyboard", true);
    caps.setCapability(MobileCapabilityType.PLATFORM_NAME, MobilePlatform.Android);

    try {
        driver = new AndroidDriver < > (new URL(appium_node), caps);
    } catch (MalformedURLException e) {
        e.printStackTrace();
    }
    driver.manage().timeouts().implicitlyWait(90, TimeUnit.SECONDS);

}
0
Harpuneet

これにより、最新のAppium1.10でchromeブラウザが起動しました

package com.prac.com;

import Java.net.MalformedURLException;
import Java.net.URL;
import Java.util.concurrent.TimeUnit;

import org.openqa.Selenium.remote.CapabilityType;
import org.openqa.Selenium.remote.DesiredCapabilities;

import io.appium.Java_client.Android.AndroidDriver;

public class Demo1LaunchChrome {

    private static AndroidDriver driver;
    public static void main(String[] args) throws MalformedURLException, InterruptedException{
        // TODO Auto-generated method stub

        DesiredCapabilities cap = new DesiredCapabilities();
        cap.setCapability(CapabilityType.BROWSER_NAME, "Chrome");
        cap.setCapability("deviceName", "emulator demo1");
        cap.setCapability("platformVersion", "8.0.0");
        cap.setCapability("platformName", "Android");

        System.setProperty("webdriver.chrome.driver", "C:\\Appium Jars\\chromedriver_win32\\chromedriver");
        Thread.sleep(10000);
        driver = new AndroidDriver(new URL("http://0.0.0.0:4723/wd/hub"), cap);
        Thread.sleep(10000);
        driver.get("https://hobbyclues.in");
         Thread.sleep(10000);
         System.out.println("Done!");
         driver.quit();

    }

}
0

まず、モバイルデバイスがchromeブラウザに接続されていることを確認します。WebブラウザのURLで次のコマンドを入力します

chrome://inspect/devices#devices

接続されているデバイスのリストが表示されます。

次に、必要な機能を設定します。

以下は私のために働くコードです:

public void setUp() {
    File app = new File("./TestingAPK/app-release-v3.1.0-c20170201.apk");
    DesiredCapabilities capabilities = new DesiredCapabilities();
    capabilities.setCapability(CapabilityType.BROWSER_NAME, "Chrome");
    capabilities.setCapability(MobileCapabilityType.PLATFORM_NAME, MobilePlatform.Android);
    capabilities.setCapability("deviceName", "emulator-5554");
    capabilities.setCapability("unicodekeyboard", true);
    capabilities.setCapability("resetkeyboard", true);
    capabilities.setCapability(MobileCapabilityType.PLATFORM_VERSION, "21");
    capabilities.setCapability("appPackage", "app.mangalam.billboy");
    capabilities.setCapability("appActivity", "app.mangalam.billboy.main.SplashActivity");

    capabilities.setCapability("app", app.getAbsolutePath());
    try {
        driver = new AndroidDriver < > (new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
    } catch (MalformedURLException e) {
        e.printStackTrace();
    }
    driver.manage().timeouts().implicitlyWait(90, TimeUnit.SECONDS);
}