iOS UIAutomation:切换应用程序

时间:2014-03-31 15:44:03

标签: ios-ui-automation

我正在尝试使用UI自动化来测试切换应用时UIPasteboard的写作和阅读。但是,在切换到第二个应用程序后,脚本会挂起。我正试图让测试睡眠以防止它挂起。我已尝试使用waitForInvalidpushTimeout/popTimeout,这两种方法似乎无法正常工作,测试仍然会在第二个应用中转到logElementTree之前挂起。

这是我使用waitForInvalid的UI自动化脚本。 (“粘贴板共享”按钮是启动第二个应用程序的地方):

var target = UIATarget.localTarget();

target.frontMostApp().mainWindow().segmentedControls()[0].buttons()["1MB"].tap();
target.frontMostApp().mainWindow().buttons()["Pasteboard Sharing"].tap();

UIATarget.localTarget().frontMostApp().mainWindow().buttons()["Paste & Go"]
    .tap();
UIATarget.localTarget().frontMostApp().mainWindow().buttons()["Paste & Go"]
    .waitForInvalid();

target.frontMostApp().mainWindow().logElementTree();

这是使用pushTimeout/popTimeout的脚本:

var target = UIATarget.localTarget();

target.frontMostApp().mainWindow().segmentedControls()[0].buttons()["1MB"].tap();
target.frontMostApp().mainWindow().buttons()["Pasteboard Sharing"].tap();

UIATarget.localTarget().frontMostApp().mainWindow().buttons()["Paste & Go"]
    .tap();

UIATarget.localTarget().pushTimeout(10);
UIATarget.localTarget().frontMostApp().mainWindow().buttons()["Check Pasteboard"]
    .withValueForKey(1, "isVisible");
UIATarget.localTarget().popTimeout();

target.frontMostApp().mainWindow().logElementTree();

1 个答案:

答案 0 :(得分:1)

如果我理解正确,您希望使用相同的脚本来测试两个应用程序。但是,如果您只使用UIA,那是不可能的。使用UIAutomation,您只能拥有一个应用程序作为目标。因此,切换到另一个应用程序将只是"挂起"因为目标应用是在后台。我已经在某个地方读过您可以使用Appium https://github.com/appium/appium在两个应用之间进行互动但我自己也没有使用它。