模拟Home键按下- iPhone测试

4

我正在测试一个iPhone应用程序。我试图设置测试用例,以便以后可以使用UIAutomation(我并不完全局限于此 - 我可以切换到其他框架)。我基本上需要创建一个类似于以下内容的测试:

+ Launches application
+ Clicks a few specific buttons
+ Hits the home button exiting the application
+ Relaunches the application
+ Checks the status of the application

有没有任何想法如何做到这一点,或者使用什么框架来完成呢?
提前致谢。
4个回答

7
您无法模拟按下主页按钮,但您可以强制退出应用程序。调用[[UIApplication sharedApplication] terminate];将终止或(在iOS 4.x的情况下)将应用程序后台运行。然而,您将无法使用UIAutomation重新启动应用程序。
您可以尝试使用UIAutomation结合屏幕录制脚本来重放鼠标移动和点击。这将允许您直接与模拟器交互,例如主页按钮点击和应用程序图标点击等操作。
或者,您可以使用UIATarget来实现“足够好”的测试。根据文档,

UIATarget类表示被测试系统(SUT)的高级用户界面元素,即您的应用程序、iOS以及它们运行的连接设备。你的测试脚本,使用JavaScript编写,并与UI Automation工具一起运行,使用此类和相关的UIA类来执行SUT并记录结果。

使用UIATarget.localTarget().deactivateAppForDuration(seconds);命令,您可以将您的应用程序置于后台n秒钟。

使用此方法测试将应用程序从前台执行上下文切换到后台执行上下文,反之亦然。请注意,使用iOS SDK 4.0或更高版本构建的应用程序在iOS 4.0及更高版本上运行时,当用户按下主页按钮时不一定会终止。有关多任务处理和后台执行上下文的详细信息,请参阅iOS应用程序编程指南。


3
在Xcode 7中,使用UI测试可以按下home按钮。
XCUIDevice.sharedDevice().pressButton(XCUIDeviceButton.Home)

来源: https://dev59.com/FI_ea4cB1Zd3GeqPQZzn#33087217

在IT技术中,"race condition"(竞争条件)指的是当两个或多个进程同时访问共享资源时,最终结果取决于进程执行顺序的情况。这种情况下,程序员需要使用锁来保证同步和避免竞争条件的发生。


这是Swift用户的正确做法。干得好@Steve! - Laser Hawk

1

我不认为这是可能的,但你可以使用

UIATarget.localTarget().deactivateAppForDuration(100);

将您的应用程序置于后台一段特定时间。

0
按下iOS设备的主页按钮
def hit_home
  home =`osascript -e 'tell application "System Events" to tell process "iOS Simulator"' -e'keystroke "H" using command down' -e'delay 2' -e'end tell'`
  puts("home button exits - #{home.to_i}")
end

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接