仪器仪表自动化工具:脚本结束,没有显式关闭该试验(Instruments Automation To

2019-07-19 21:14发布

我玩弄在今天仪器自动化工具,但不得不编写工作的测试问题。 下面的例子将退出Issue: Script ended without explicting closing this test 。 是的,该消息确实说expliciting。 我想这是在最近版本的Xcode推出了错字。 这是我第一次使用这个工具尝试。 设置cellCount 6所导致通不过任何事情给我的“脚本结束”的消息。 难道我做错了或者是没有使用自动化工具的错误。

UIALogger.logStart("Start Simple Test");
var target = UIATarget.localTarget();
var cellCount = 7;

UIALogger.logMessage("cell count: " + cellCount);

if (cellCount != 6) {
    UIALogger.logFail("Failed");
}

UIALogger.logPass("Passed");

Answer 1:

我认为发生的事情是您正确关闭日志组。 当你说logStart()你开始在仪器日志组,您登录后一切与logMessage()logError()将封闭该组群。

您关闭组,无论是logFail()logPass()它看起来像你试图这样做,但你只能叫一个或另一个。 你需要一个else子句中有调用logPass()像这样:

if (cellCount != 6) {
    UIALogger.logFail("Failed");
} else {
    UIALogger.logPass("Passed");
}

奇怪的是,当我粘贴你的代码片段UI自动化,我没有得到你提到的问题的错误。 它只是印了日志组跟踪日志。 尝试使用else子句就像我上面提到的,看看它是否工作。



Answer 2:

我在这里找到了真正的问题。 它基本上是说,你的应用没有使用模式在指定点进一步检验。 所以,请要么通过/失败,或者在这个地方增加适当的延迟。

因此,为了避免这个最简单的解决方案是每页面导航后具有2秒的一个延迟功能。 这将在每个页面获取和全景显示的数据后加载数据。 和脚本将平稳运行。

//步骤:1个导航/轻敲

UIATarget.localTarget().delay(2);

//验证

//步骤:2导航/轻敲

UIATarget.localTarget().delay(2);

//验证



Answer 3:

真奇怪。 我正好遇到了同样的问题如上文所述,我还使用了else条款。

另外,我尝试了双测井方法上面,像这样提到,之前我if语句记录合格或不合格:

UIALogger.logMessage("My Story Title: " + titleDisplayed);
UIALogger.logMessage("Innocuous Message.");

并得到了失败,这是好的-我想要什么比“其他Issue ”的结果和“ script ended without expliciting的消息”。 于是,我接着评论//第二logMessage声明,并重新运行测试,这一次拿到了“ Issue ”和“ script ended without explicating试”。

因此,他的上述技巧已经被验证为真。

我运行Xcode和仪器4.6版本与iPhone模拟器运行的6.1项目。

--- Update--

我不能得到合格/不合格正确不管我做什么工作。 一方面来看,我得到激怒“ Issue: Script ended without explicating ”在我的日志消息,然后,如果我做的脚本中的任何改变-哪怕它只是增加一个额外的空白,并保存它,然后运行再次- -I'll获得良好的通过或失败的结果。

但是,如果我再没有立即在所有的任何变化再次运行测试我去拿“ Issue: Script ended without explicating ”的消息,这将不会消失,直到我在做剧本毫无意义的变化和保存,然后再次运行和那么也许在这一点上我可能会得到一个体面的通过/失败结果(并不总是发生),但如果我再次运行该脚本,我会得到“ Issue: Script ended without explicating ”了。

有没有搞错? 其实我已经花时间重新安装的Xcode 4.6,但在获得的行为没有运气改变。 我深刻地感到沮丧。 这似乎是在仪器的错误。 有没有办法来将此情况报告给苹果?



Answer 4:

我有这个问题了。 你必须有你把你的logStart方法在logPass或logFail方法太字符串 - 这一切! 这意味着,例如:

UIALogger.logStart("Add to Whishlist");
//here comes your automation code
UIALogger.logPass("Add to Whishlist");

您可以打开,然后用另一个测试logStart()并关闭它要么logPass()方法



Answer 5:

我发现,如果你把不同的消息之间的延迟,但实际显示和评估的问题。 我开始是问题,这两个连续的日志消息没有正确显示(最后一个被丢弃)

UIALogger.logMessage("This is some text");
UIALogger.logMessage("This is some text");
//UIATarget.localTarget().delay(1);

仅表现一条输出线。 取消注释显示了两个......这似乎有点...不一致 - 并且有更多的(这正好沃尔夫)

UIALogger.logStart("Add to Whishlist");
UIALogger.logMessage("My Story Title: ");
//UIATarget.localTarget().delay(1);
UIALogger.logMessage("Innocuous Message.");
//UIATarget.localTarget().delay(1);
if (true)
    UIALogger.logPass("Add to Whishlist");
else
    UIALogger.logFail("Add to Whishlist");

在这里,我得到了一个“ 问题 ”。 取消注释有助于解决这个问题。 我知道,这是无解的。 但它的工作对我来说是解决方法。

在“串”在logStart,logFail或logPass并不重要,我其实。



文章来源: Instruments Automation Tool: Script Ended Without Explicitly Closing This Test