Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cocoa 是否将mainWindow()解析为全名?_Cocoa_Ios Ui Automation - Fatal编程技术网

Cocoa 是否将mainWindow()解析为全名?

Cocoa 是否将mainWindow()解析为全名?,cocoa,ios-ui-automation,Cocoa,Ios Ui Automation,我正在使用Apple的UI自动化类。我尝试自动化的(桌面)应用程序有多个窗口。使用UIAElement,我可以获取光标当前所在的元素。但是,我注意到,有时窗口显示为mainWindow(),而有时窗口的名称较长。我假设这是因为mainWindow()是当前具有焦点的窗口 有没有办法获取mainWindow()的“规范”名称?例如:假设我有target.processs()[“MyApp”].windows()[“Window1”]和target.processs()[“MyApp”].windo

我正在使用Apple的UI自动化类。我尝试自动化的(桌面)应用程序有多个窗口。使用
UIAElement
,我可以获取光标当前所在的元素。但是,我注意到,有时窗口显示为
mainWindow()
,而有时窗口的名称较长。我假设这是因为
mainWindow()
是当前具有焦点的窗口


有没有办法获取
mainWindow()
的“规范”名称?例如:假设我有
target.processs()[“MyApp”].windows()[“Window1”]
target.processs()[“MyApp”].windows()[“Window2”]
,而我目前专注于
Window2
。因此,
Window2
将显示为
target.processs()[“MyApp”].mainWindow()
——但我想找到一种方法,可以说,将
mainWindow()
解析为全名。

首先,您可以在应用程序中设置窗口的唯一标识符:

[window1 setAccessibilityIdentifier:@"Window1"];
[window2 setAccessibilityIdentifier:@"Window2"];
然后,您应该能够在测试脚本中访问这些标识符。根据您当时使用的窗口,
.name()
应返回
Window1
Window2

var mainWindowName = target.frontMostApp().mainWindow().name();

此外,这里还有一个指向文档的链接,以备需要:

是否需要以编程方式获取脚本中的窗口名称?是的,我需要。目标是记录用户点击的内容,等等,如果某些操作包含mainWindow(),但我不知道当时哪个窗口是mainWindow(),那么很难推断用户在做什么。如果你阅读我的原始问题,我需要能够弄清楚当时的mainWindow()是什么。它不是唯一的标识符。@user2406467,根据文档,
.name()
是您可以获得的唯一可靠标识符;您可以在Objective-C源代码中设置它,以便稍后在测试代码中使用它。请参阅我的最新答案。