Ipad UIAutomation with Instruments-如何点击复制/粘贴按钮?

Ipad UIAutomation with Instruments-如何点击复制/粘贴按钮?,ipad,instruments,ios-ui-automation,Ipad,Instruments,Ios Ui Automation,我正在使用iOS自动化仪器,但我似乎不知道如何点击复制/粘贴菜单上的选项。当我执行logElementTree()时,我看到返回的是一个UIEditingMenu,然后是三个元素(对应于该菜单的选项,例如复制/粘贴等)。我试图将其放入一个变量中,然后尝试“点击”该变量,但我无法使其工作。以下是我的代码示例: var target = UIATarget.localTarget(); var app = target.frontMostApp(); var window = app.mainW

我正在使用iOS自动化仪器,但我似乎不知道如何点击复制/粘贴菜单上的选项。当我执行logElementTree()时,我看到返回的是一个UIEditingMenu,然后是三个元素(对应于该菜单的选项,例如复制/粘贴等)。我试图将其放入一个变量中,然后尝试“点击”该变量,但我无法使其工作。以下是我的代码示例:

var target = UIATarget.localTarget();

var app = target.frontMostApp();

var window = app.mainWindow();

//This generates the highlighted text

app.dragInsideWithOptions({startOffset:{x:0.45, y:0.6}, endOffset:{x:0.45, y:0.6}, duration:1.5});

var copy = app.editingMenu.elements.withName("copyButton");

copy.tap();

Instruments returns, "0) UIAElementNil".  In addition to the above, I've also tried:

app.elements.withName("copyButton")

window.elements.withName("copyButton")
因此,我可以使用编辑菜单生成可用的选项,但我无法找到点击或选择其中一个选项的方法。我不太确定我是否知道如何引用这些选项

有人有什么想法吗

谢谢

嘿。
首先,我总是使用
.elements()
而不是
.elements
。。。但它是JS,所以它可能正在调用分配给对象属性的函数。
无论如何,也许这个编辑菜单不是应用程序的内部窗口,但它是系统级菜单,当你拖动时会被调用?如果这是真的,请尝试:

UIATarget.localTarget().frontMostApp().elements().withName("copyButton").tap();
但正如我在您的版本中看到的,调用
app.editingMenu()
应该可以 可能尝试按位置调用按钮,您将看到哪个按钮响应:

UIATarget.localTarget().frontMostApp().editingMenu().elements()[0].tap;
UIATarget.localTarget().frontMostApp().editingMenu().elements()[1].tap;
UIATarget.localTarget().frontMostApp().editingMenu().elements()[2].tap;   

你应该这样找到正确的位置。当您找到它的位置时,您可以通过
按钮.logElement()检查它的属性。使用此inf,您应该能够切换回
。withName
方法,而不是硬编码位置。

您应该尝试
app.editingMenu().elements()[index]。点击()
,其中index是要从返回的元素数组中点击的选项的索引。我的一个是这样工作的。

我做的类似于yoosiba,但编辑菜单元素名称。 使用Xcode 4.5.1和运行iOS 6的设备

使用Alex Vollmer针对target、app和vtap()的优秀功能。 否则,可以使用UIATarget.localTarget().frontMostApp()和tap()

注意:vtap()将延迟并重试轻敲。如果没有这一点,您可能需要添加自己的延迟

 // tap in textFieldA to see editingMenu.
 app.mainWindow().textFields()["textFieldA"].vtap();
 app.editingMenu().elements()["Select All"].vtap();
 app.editingMenu().elements()["Copy"].vtap();
 // must delay before attempting next tap
 target.delay(2);

 // ... navigate to different section of the app

 // tap in textFieldB to see editingMenu.
 app.mainWindow().textFields()["textFieldB"].vtap();
 // paste clipboard contents copied from textFieldA into textFieldB
 app.editingMenu().elements()["Paste"].vtap();
 target.delay(2);

嘿,约西巴,我非常感谢你花时间回复。不幸的是,尽管有你的建议,我仍然无法让它发挥作用。回到绘图板上,我走。