我有一个非常简单的应用程序,其中包括一个TableViewController,它显示一个包含图像,标签和按钮的自定义单元格的表格,当您点击按钮时,将显示actionSheet。所以,在我的自定义java脚本中(使用Instruments-UIAutomation)我想在我的表中按下按钮(我可以毫无问题地执行此操作),然后当actionSheet出现时我只想点击唯一的按钮(取消按钮)它表明了。
我不知道如何正确地做到这一点。所以这是我的js代码:
var target = UIATarget.localTarget();
var app = target.frontMostApp();
var main = app.mainWindow();
main.tableViews()[0].cells()[1].buttons()["DetailsButton"].tap();
target.delay(5);
main.actionSheet().elements()[0].tap();
这就是我得到的信息:
Script threw an uncaught JavaScript error: 'undefined' is not a function (evaluating 'main.actionSheet()') on line 9 of New%20Script
我也试过actionSheet().buttons()[0].tap();
- 没有帮助,继续得到同样的错误。
我甚至尝试通过它的accessibleLabel访问actionSheet:
main.actionSheet()["CellNumberSheet"].elements()[0].tap();
如果它会有所帮助,那就是我显示actionSheet的方式:
[actionSheet showInView:[UIApplication sharedApplication].keyWindow];
元素层次结构似乎也是正确的。
在网上找不到太多有用的信息......所以任何帮助都会受到赞赏......
答案 0 :(得分:6)
在iOS8上,操作表按钮和元素似乎没有用,因此我检查了SparkInspector,它现在使用了一个集合视图:
此代码将点按取消按钮的底部按钮:
target.frontMostApp().actionSheet().collectionViews()[0].visibleCells()[0].tap()
答案 1 :(得分:2)
如果您想点按actionSheet,您必须使用以下内容:
var target = UIATarget.localTarget();
var app = target.frontMostApp();
var window = app.mainWindow();
target.frontMostApp().actionSheet().buttons()["Cancel"].tap();
但如果您使用window.actionSheet()
,则会返回错误。
答案 2 :(得分:1)
答案 3 :(得分:0)
尝试使用:
//check that action sheet is on the screen
app.actionSheetIsValid();
//add some delay
target.delay(2);
//check that the button is on the actionSheet
actionSheet.actionSheetButton("Cancel");
//add some delay
target.delay(2);
//touch Exit button
actionSheet.tapActionSheetButtonByName("Cancel");