使用appium自动从iOS移动应用程序启动Safari

时间:2017-12-18 15:01:27

标签: ios mobile automation appium

我正在 iOS移动应用上使用 Appium 进行自动化。

我需要:

  • 打开应用
  • 做一些任务
  • 开放野生动物园

我环顾四周如何去做,但我一直在阅读,由于苹果框架的限制,这是不可能的,它不允许你在每个会话中向多个应用程序发送命令。

有没有人知道解决这个问题的方法?或者,如果我读到的内容并非100%真实。

4 个答案:

答案 0 :(得分:1)

  

它不允许您将命令发送到每个会话的多个应用

这是真的,但你可以在单一测试中运行 2次

  1. 使用 app 基于功能
  2. 创建appium驱动程序的实例
  3. 在应用中执行您需要的工作
  4. 退出司机
  5. 使用浏览器为基础的功能
  6. 创建appium驱动程序的实例
  7. 在野生动物园中做你需要的东西
  8. 退出司机
  9. 快速地看起来像:

    BigDecimal

答案 1 :(得分:0)

您可以使用以下方法,

  1. 为app创建了两个安装程序,为safari创建了另一个安装程序。
  2. 首次启动应用程序并执行任务
  3. 明确第一次会议
  4. 再次为safari创建新的Appium对象(调用第二个设置)
  5. 执行浏览器活动
  6. 关闭safari appium会话

答案 2 :(得分:0)

您也可以在没有退出驱动程序的情况下遵循我的方法。

  1. 去终止申请。 (我已经使用javascript运行terminateApp因为本机方法对我不起作用。)
  2. 在主屏幕上查找Safari,然后单击
  3. 使用drive.get按预期打开网站。
  4. 在那里,您可以更改为WEBVIEW_***以检查网络元素。
  5. 通过NATIVE_APP关键字
  6. 返回原生语境

    示例代码:

        System.out.println("Run application");
        Map<String, Object> params = new HashMap<>();
        params.put("bundleId", "com.example");
        boolean terminalApp = (boolean) driver.executeScript("mobile: terminateApp", params);
        System.out.println("terminateApp: " + terminateApp);
        driver.findElementById("Safari").click();
        Set<String> contextNames = appDriver.getContextHandles();
        // Change context to WEBVIEW_***
        appDriver.context(String.valueOf(contextNames.toArray()[1]));
        driver.get("https://www.google.com.vn");
        Thread.sleep(20000);
        // Do something. 
        // ...
        // If you want to communicate with NATIVE context just change to NATIVE_APP.
        appDriver.context("NATIVE_APP");
    

答案 3 :(得分:0)

您可以通过driver.activateApp(BUNDLE_ID);

激活系统应用

无需杀死应用驱动程序并启动浏览器驱动程序即可访问浏览器,只需在应用程序之间切换即可。

野生动物园

driver.activateApp("com.apple.mobilesafari");