首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带仪器的UIAutomation -如何点击复制/粘贴按钮?

带仪器的UIAutomation -如何点击复制/粘贴按钮?
EN

Stack Overflow用户
提问于 2011-03-23 23:56:19
回答 3查看 1.9K关注 0票数 2

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

代码语言:javascript
复制
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生成可用的选项,但我想不出一种方法来点击或选择这些选项中的一个。我不太确定我是否知道如何引用这些选项。

有谁有什么想法吗?

谢谢!

EN

回答 3

Stack Overflow用户

发布于 2012-05-18 04:10:42

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

票数 1
EN

Stack Overflow用户

发布于 2011-03-24 07:46:18

嘿。

首先,我一直在使用.elements()而不是.elements...但它是JS,所以它可能会调用分配给对象属性的函数。

无论如何,也许这个编辑菜单不是应用程序的内部窗口,但它是系统级菜单,当你进行拖动时,它会被调用。如果这是真的,请尝试:

代码语言:javascript
复制
UIATarget.localTarget().frontMostApp().elements().withName("copyButton").tap();

但正如我在apple reference中看到的,你的版本调用app.editingMenu()应该没问题……

也许可以尝试按位置调用按钮,您将看到哪个响应:

代码语言:javascript
复制
UIATarget.localTarget().frontMostApp().editingMenu().elements()[0].tap;
UIATarget.localTarget().frontMostApp().editingMenu().elements()[1].tap;
UIATarget.localTarget().frontMostApp().editingMenu().elements()[2].tap;   

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

票数 0
EN

Stack Overflow用户

发布于 2012-10-08 05:29:10

我使用了类似于yoosiba的方法,但是使用了editingMenu元素名称。使用Xcode4.5.1和运行iOS 6的设备。

将Alex Vollmer的优秀tuneup_js用于目标、应用程序和vtap()。否则,您可以使用UIATarget.localTarget()、.frontMostApp()和tap()。

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

代码语言:javascript
复制
 // 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);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5408039

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档