我们的想法是创建一个应用程序,可以在iOS中的另一个应用程序的后台连续发送“在坐标(x,y)”事件中点击屏幕。想想'Cookie Clicker'作弊。我目前正在他的应用程序中帮助我的朋友,我的工作是尝试尽可能地将其排除在外。我有一种轻微的感觉,即尽可能多地点击他的一个按钮会使他的应用程序出错,这就是为什么我在这里。
该方法使用KIF以及iOS中的后台执行来实现此目的。
在其中一个类中,文件KIFUITestActor.m的代码为:
<div id='tooltipAncestorOff'>
<div id='tooltipAncestorClick'>
<div id='tooltipAncestorHover'>
<p class='autosize'>Just <span class='hilite' id="onez">FIRST hilite</span></p>
<p class='autosize'>Only <span class='hilite' id="twoz">SECOND hilite</span></p>
<p class='autosize'>Only <span class='hilite' id="threez">THIRD hilite</span></p>
<p class='autosize'>Only <span class='hilite' id="fourz">FOURTH hilite</span></p>
<p class='autosize'>Only <span class='hilite' id="fivez">FIFTH hilite</span></p>
<p class='autosize'>Only <span class='hilite' id="sixz">SIXTH hilite</span></p>
</div> </div> </div>
<ul>
<li id='toolTip'>placeholder... solve: why do I need text here?</li>
</ul>
<form name="chooseTooltips">
<input type="radio" name="tooltips" value="hover" checked> HOVER TOOLTIPS<br />
<input type="radio" name="tooltips" value="click"> CLICK TOOLTIPS<br />
<input type="radio" name="tooltips" value="none"> NO TOOLTIPS<br />
</form>
这是我正在寻找的代码,我将如何在Swift中实现它? (或者Objective-C,如果它让事情变得更容易?)
非常感谢你能回答这个问题。
答案 0 :(得分:1)
一些选项,具体取决于您有权访问的内容。如果你有其他应用程序的实际IPA,你想要“错误”,并且你可以附加一个测试目标,那么m = 0
x = 1
while x < 4:
y = 1
while y < 3:
m = m + x + y
y = y + 1
x = x + 1
print(m)
是一个很好的选择。
这是关于使用KIF进行UI测试的一个小指南(可轻松转换,链接here)。一个简短的总结是:
KIF
那种代码应该有一个等价的 [tester tapViewWithAccessibilityLabel:@"Clear"];
或类似的东西(我上次使用过KIF一年前,但它应该记录得很好)。
但是,如果您无法访问您尝试攻击的应用程序,这似乎更适合此类问题,那么您可以完全使用不同的方法。
如果您至少可以在iPhone模拟器中下载应用程序,那么Automator可以帮助您编写脚本。由于我认为Xcode 9允许你这样做,所以只要目标应用程序在应用程序商店中,这部分就不应该很难。
如果不是,并且您没有代码,我很想知道您是如何分发应用程序的,因为可能仍然有办法使用我建议的一个或另一个选项。祝你好运!
编辑:更新基于重新阅读问题+赏金请求
将该类作为后台服务运行会实现后台执行吗?
这又取决于您是否可以将其作为后台服务运行。如果你有权访问代码本身,那么它可以完成,虽然我不确定后面执行的目标在你描述的问题中是什么。
tapViewAtPoint
将无法处理前台不在的任何内容。一般情况下,iOS设备永远不会在后台将应用程序漏斗到应用程序,因此如果要测试的攻击媒介是重复点击应用程序,则后台执行可能不是答案。
从你的问题来看,这看起来更像是一个用于并行化tap循环的用例,你的问题似乎可以从KIF
的并行模拟器功能添加中受益。
虽然我还没有亲自尝试过,但您可以在运行Xcode 9
的计算机上的多个模拟器中运行并行KIF
。这可能是获取尽可能多的关于导致问题的数据点的最佳方式,与Xcode 9
一样,您可以随时截取应用程序的屏幕截图。在UI tests
中,我认为还有一项新功能可以直接从Xcode 9
录制视频(不再需要Simulator
)。