我正在使用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")因此,我可以让editingMenu生成可用的选项,但我想不出一种方法来点击或选择这些选项中的一个。我不太确定我是否知道如何引用这些选项。
有谁有什么想法吗?
谢谢!
发布于 2012-05-18 04:10:42
您应该尝试app.editingMenu().elements()[index].tap(),其中index是要从返回的元素数组中点击的选项的索引。我的手机是这样工作的。
发布于 2011-03-24 07:46:18
嘿。
首先,我一直在使用.elements()而不是.elements...但它是JS,所以它可能会调用分配给对象属性的函数。
无论如何,也许这个编辑菜单不是应用程序的内部窗口,但它是系统级菜单,当你进行拖动时,它会被调用。如果这是真的,请尝试:
UIATarget.localTarget().frontMostApp().elements().withName("copyButton").tap();但正如我在apple reference中看到的,你的版本调用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();检查它的属性。有了这个信息,你应该能够切换回.withName方法,而不是硬编码的位置。
发布于 2012-10-08 05:29:10
我使用了类似于yoosiba的方法,但是使用了editingMenu元素名称。使用Xcode4.5.1和运行iOS 6的设备。
将Alex Vollmer的优秀tuneup_js用于目标、应用程序和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);https://stackoverflow.com/questions/5408039
复制相似问题