我可以在同一测试中在一个模拟器上启动应用程序并在另一个模拟器上启动移动浏览器吗?

Can I launch app on one emulator and mobile browser in another emulator in the same test?

我有一个用例,我需要从模拟器 1 中安装的应用复制 link,关闭应用,切换到模拟器 2,然后在模拟器 2 上启动浏览器并粘贴 link 从模拟器 1 中的应用程序复制。我怎样才能做到这一点?我编写的代码在模拟器 1 本身中调用浏览器并粘贴 link.

    File app = new File("abcd.apk");
    DesiredCapabilities cap = new DesiredCapabilities();
    cap.setCapability(MobileCapabilityType.DEVICE_NAME, "emulator-5554");
    cap.setCapability(MobileCapabilityType.NEW_COMMAND_TIMEOUT, "100");
    cap.setCapability(MobileCapabilityType.APP, app.getAbsolutePath());

    AndroidDriver driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), cap);
    driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);
    /*
     String link = code to get the link
    */
    driver.closeApp();
    driver.quit();


    DesiredCapabilities cap1 = new DesiredCapabilities();
    cap1.setCapability(MobileCapabilityType.DEVICE_NAME, "emulator-5556");
    cap1.setCapability(MobileCapabilityType.PLATFORM_NAME, MobilePlatform.ANDROID);
    cap1.setCapability(MobileCapabilityType.BROWSER_NAME, "chrome");
    cap1.setCapability(MobileCapabilityType.VERSION, "7.0");

    WebDriver webdriver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), cap1);  // chrome mobile
    webdriver.get(link);

为此,您需要将设备 udid 放入 DesiredCapabilities。要查找模拟器的设备 udid,可以在命令提示符中使用 adb devices。它将显示设备 udid。

然后您可以复制设备udid并将其添加到DesiredCapabilities中。

//Other desired capabilities
cap.setCapability("udid","your emulator 1 device udid");
AppiumDriver driver= new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), cap);

它将在模拟器 1 中启动您的应用程序。现在您可以使用

从设备一复制 link
String myLink= driver.findElementById("elements id here").getText();

然后在DesiredCapabilities cap1

中添加emulator2的udid
//other desired capabilities
cap1.setCapability("udid", "emulator 2 udid");

AppiumDriver driver2 = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), cap);

//open URL in chrome browser
driver.get(myLink);