我是applescript的新手,我想确定遍历窗口中行的最佳实践。但是我不知道一旦比较所有行就如何引发错误。
目前,我将“硬值”设置为3(因为我只有2行要检查),但是我可能有3行以上,并且一旦它检查了窗口中的所有行,我希望它失败。
我该如何替换下面的代码行“如果TheRow等于3”以检测到它已遍历所有行?
set ReadDBPluginName to value of (text field 1 of row TheRow of table 1 of scroll area 1 of tab group 1 of window "Plugins Manager" of process "OSX")
if ReadDBPluginName is not equal NewDBPluginName then
set TheRow to TheRow + 1
if TheRow is equal to 3
error "Plugin Name " & NewDBPluginName & " does not exist"
end if
答案 0 :(得分:0)
尽管我在评论中针对您的问题写了什么(这对以后的帖子仍然是很好的建议,可以帮助您获得最好的帮助),但我可能会为您提供解决方案,请记住,它直接从我的头顶上冒出来,并且没有经过任何测试。
您似乎正在遍历一系列UI elements
对象,这些对象分为row
个对象,每个对象都包含一个text field
,您希望检索其中的value
个对象,并将其与某个预先存在的字符串(NewDBPluginName
)进行比较。
以此为前提,您可以消除已经使用的任何repeat
循环,并立即读取每个text field 1
中每个row
的值。然后,只需检查一下此值列表是否包含NewDBPluginName
:
tell application "System Events" to ¬
set ReadDBPluginNames to the value of ¬
text field 1 of ¬
rows of ¬
table 1 of ¬
scroll area 1 of ¬
tab group 1 of ¬
window "Plugins Manager" of process "OSX"
if NewDBPluginName is not in ReadDBPluginNames then ¬
error "Plugin Name " & NewDBPluginName & " does not exist"