jl3*_*303 4 javascript applescript javascript-automation
有人可以帮我制作一个脚本来报告 uielement 的所有子元素及其属性吗?它类似于 WholeContents() 函数。这是我的递归函数。
function iterate(obj) {
for (var property in obj) {
if(obj[property] instanceof Array) {
console.log("Array: " + property + "," +obj[property])
iterate(obj[property])
} else if(obj[property] instanceof Object){
console.log("Object: " + property + ',' + obj[property])
iterate(obj[property])
} else {
console.log("Unknown: " + property +"," + obj[property]);
}
}
}
iterate(app.windows())
Run Code Online (Sandbox Code Playgroud)
我只达到第一级。每个项目下都有一堆 UIElements 和数组。我认为这与 Applescript 返回对象说明符有关,但与实际对象无关?我不确定如何将对象说明符的名称作为函数调用。我尝试了 objproperty、obj.property()、eval("obj." + property + "()"),,但它们都不起作用。我也尝试过 iterate(app.windows())[0]
谢谢您的帮助。
Processes Suite我想您想使用“系统事件”中的命令。
UIElement,您必须使用以下属性之一:(accessibilityDescription、class、description、enable、wholeContents、focused、help、maximumValue、minimumValue、名称、方向、位置、角色、roleDescription、选定、大小、子角色、标题、值)
obj[i].name().要从 UIElement 获取所有 UIElement,您必须使用obj[i].uiElements()
下面是“ TextEdit ”进程窗口上的一个示例。
function iterate(obj) {
for (var i in obj) {
if(obj[i] instanceof Array) {
iterate(obj[i])
} else if(obj[i] instanceof Object){
console.log("Object: " + i + ': name = ' + obj[i].name() + ', value = ' + obj[i].value() + ', class = ' + obj[i].class() + ', description = ' + obj[i].description())
iterate(obj[i].uiElements())
}
}
}
var sysEv = Application('System Events')
var app = sysEv.processes['TextEdit']
iterate(app.windows())
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
540 次 |
| 最近记录: |