2

我正在使用 Instruments for 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")

因此,我可以让 editorMenu 生成可用选项,但我无法找到一种方法来点击或选择其中一个选项。我不太确定我知道如何开始引用这些选项。

有没有人有任何想法?

谢谢!

4

3 回答 3

1

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

于 2012-05-17T20:10:42.497 回答
0

我这样做与 yoosiba 类似,但使用了 editingMenu 元素名称。使用 Xcode 4.5.1 和运行 iOS 6 的设备。

使用 Alex Vollmer 出色的tuneup_js用于 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);
于 2012-10-07T21:29:10.347 回答
0

嘿。
首先,我一直使用.elements()not .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;   

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

于 2011-03-23T23:46:18.447 回答