是否可以在iOS中同时自动化两个应用程序?

时间:2017-03-30 19:43:00

标签: ios automation appium ui-automation xcuitest

我们有这种情况:

在app1中执行脚本,在某个步骤中,app1向我们发送带有URL的短信,app1期待在文本字段中显示验证码

我们必须打开短信应用以验证短信是否存在,此短信有一个URL,当我们点击它时,它再次将我们发送到app1,但自动将验证码写入文本域。

然后,继续编写脚本。

可以这样做吗? 我们需要做什么?

感谢。

3 个答案:

答案 0 :(得分:1)

是的,根据您的方案,您必须在app1中执行脚本的过程中启动消息(将其称为app2)应用程序。您可以使用以下代码打开app2。

 driver.startActivity(app2PackageName, app2ActivityName);

现在app2将打开你可以点击app2中的链接打开app1,你可以访问app1中的元素。

答案 1 :(得分:0)

根据this article,如果您使用的是Appium的XCUITest驱动程序,则是可能的。

请注意,它仅支持9.3及更高版本的iOS。

您可以在the official docs上找到其他一些您可能会感兴趣的应用程序管理命令。

答案 2 :(得分:0)

对于iOS,您可以启动SMS应用程序,然后在该应用程序中执行所需的任何操作。例如,您可以打开SMS应用程序,然后打开最新消息,然后单击(或复制)链接。

我用红宝石。我使用基于XCUITest驱动程序的方法(已经被Noyo链接了) 可以使用的方法如下:

启动设备上安装的任何应用程序的方法:

def launch_system_app(bundle_id)
  @driver.execute_script('mobile: launchApp',
     {'bundleId': "#{bundle_id}"}
   );
end

终止已启动应用程序的方法:

def terminate_system_app(bundle_id)
  @driver.execute_script('mobile: terminateApp',
     {'bundleId': "#{bundle_id}"}
   );
end

将给定字符串复制到iOS设备剪贴板的方法:

def set_pasteboard(content)
  @driver.set_clipboard(content: content)
end

使用“消息”应用程序包ID进行呼叫:

launch_system_app("com.apple.MobileSMS")
terminate_system_app("com.apple.MobileSMS")