是否可以在设备场中从 Playstore 安装应用程序?

问题描述

我正在使用 AppiumDriver 在 Amazon 设备场上安装 android 应用程序。 我已经在真实设备上测试过它,它运行得非常好,但是当我将相同的代码放入 Device Farm 时,它需要工作。它想打开 Play 商店应用程序并得到以下错误

无法创建新的远程会话。原始错误:连接超时构建信息:版本:'3.141.59',修订版:'e82be7d358',时间:'2018-11-14T08:17:03'系统信息:主机:'ip-172-31-13- 65',ip: '172.31.13.65',os.name: 'Linux',os.arch: 'amd64',os.version: '3.13.0-139-generic',java.version: '1.8.0_151'驱动程序信息:driver.version:AndroidDriver 测试失败

请检查下面的代码

@Before
public void setup() throws MalformedURLException {
    DesiredCapabilities desiredCapabilities = new DesiredCapabilities();
    desiredCapabilities.setCapability(MobileCapabilityType.UDID,"FA8351A00767");
    desiredCapabilities.setCapability(MobileCapabilityType.DEVICE_NAME,"Google Pixel 2");
    desiredCapabilities.setCapability(MobileCapabilityType.PLATFORM_VERSION,"9");
    desiredCapabilities.setCapability(MobileCapabilityType.PLATFORM_NAME,"Android");
    desiredCapabilities.setCapability(MobileCapabilityType.NO_RESET,true);
    driver = new AndroidDriver(new URL("http://0.0.0.0:4723/wd/hub"),desiredCapabilities);
    if (!isShopperAppAvailable()) {
        desiredCapabilities.setCapability(AndroidMobileCapabilityType.APP_PACKAGE,"com.android.vending");
        desiredCapabilities.setCapability(AndroidMobileCapabilityType.APP_ACTIVITY,"com.google.android.finsky.activities.MainActivity");
    } else {
        desiredCapabilities.setCapability(AndroidMobileCapabilityType.APP_PACKAGE,"your application package");
        desiredCapabilities.setCapability(AndroidMobileCapabilityType.APP_ACTIVITY,"your app's launcher activity");
    }
    driver = new AndroidDriver(new URL("http://0.0.0.0:4723/wd/hub"),desiredCapabilities);
 }

public boolean isShopperAppAvailable() {
    boolean isShopperAppAvailable = false;
    if (driver != null) {
        isShopperAppAvailable = driver.isAppInstalled("your application package");
    }
    return isShopperAppAvailable;
}

@Test
public void testGooglePlayApp() throws InterruptedException {
    if (!isShopperAppAvailable()) {
        String appName = "Search your application";
        driver.findElementById("com.android.vending:id/0_resource_name_obfuscated").click();
        Thread.sleep(500);
        driver.findElementByXPath(
                "/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/androidx.drawerlayout.widget.DrawerLayout/android.widget.FrameLayout/android.widget.FrameLayout[2]/android.widget.FrameLayout/android.view.ViewGroup/android.widget.LinearLayout/android.widget.EditText")
                .sendKeys(appName);
        Thread.sleep(500);
        driver.findElement(By.xpath(
                "/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/androidx.drawerlayout.widget.DrawerLayout/android.widget.FrameLayout/android.widget.FrameLayout[1]/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout[2]/android.support.v7.widget.RecyclerView/android.widget.LinearLayout"))
                .click();
        Thread.sleep(500);
        MobileElement installButton = (MobileElement) driver.findElementByXPath(
                "/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/androidx.drawerlayout.widget.DrawerLayout/android.widget.FrameLayout/android.widget.FrameLayout[1]/android.widget.FrameLayout/android.widget.FrameLayout/android.support.v7.widget.RecyclerView/android.widget.FrameLayout[1]/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.Button");
        installButton.click();
        Thread.sleep(10000);
    } else {
        System.out.println("open your app and do something");
    }

}

@After
public void tearDown() {
    if (driver != null) {
        driver.quit();
    }
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)