我对AppleScript相对较新,我正试图找到一种方法,以编程方式在Firefox中的“另存为... ...”对话框中输入文件名。
我已经远远没有在网上搜索了。我在Xcode中打开了Accessibility Inspector,我可以检查各种表单元素。
on run {input, parameters}
tell application "Firefox" to activate
tell application "System Events"
tell process "Firefox"
click menu item "Print…" of menu "File" of menu bar 1
click menu button "PDF" of window "Print"
keystroke "S"
keystroke return
end tell
end tell
return input
end run
我的情况是这样的:我打开Firefox有20个标签,我想使用AppleScript将每个标签保存为带有“前缀”+“数字”文件名的pdf文件,例如“foo001.pdf”,“foo002.pdf”等。
提前致谢。
答案 0 :(得分:0)
您需要知道Firefox根本不可编写脚本。但是,Safari(部分)是可编写脚本的。我希望这对你来说不是问题。我已添加评论以帮助您。
回答你的三个问题:
我使用'计算每个标签'用于获取选项卡总数的函数。结合前两个答案,您可以让重复循环运行获取每个标签所需的确切时间。
set theDestination to ((path to desktop) as text)
set theFileName to "SafariTabPDF" as text
set i to 1
tell application "Safari"
activate
tell window 1
-- Get amount of open tabs
set allTabs to count every tab
-- Repeat with the total amount of open tabs
repeat with i from 1 to allTabs
set current tab to tab i
set tempFileName to (theFileName & i) as text
tell application "System Events" to tell process "Safari"
-- Work through the clicking process
click menu item "Export as PDF…" of menu "File" of menu bar 1
delay 1
keystroke tempFileName
keystroke return
delay 1
end tell
-- Add to i to get next tab and save as corresponding file name
set i to i + 1
end repeat
end tell
end tell
在Safari中打开四个选项卡运行脚本后,我得到以下结果。
答案 1 :(得分:0)
如何设置一个可以在AppleScript中增加的变量?
set counter to 0 # setup counter
set counter to counter + 1 # increment counter
如何在可用的字段中输入可编程文件名 另存为PDF ...对话框?
使用keystroke "newFileName"
查看脚本的位置。
假设脚本以当前活动的选项卡开头 Firefox,我如何在到达最后一个标签时进行测试? (我想我 可以让它选择“下一个”选项卡,直到它出现错误)
也许你可以找到一种方法来检查下一个标签是否存在(在右侧),然后再切换到它,这样你就知道何时停止脚本。最后它只是进入第一个标签(没有错误)。
要查看一些有用的代码段,请按住Ctrl键单击一个脚本。它还有重复的例程,可以帮助您归档循环。
我无法忍受更多,但这里有一个工作的锅炉板:
第1部分将当前页面存储为pdf,其中“newFileName”作为名称,第二部分转到下一个选项卡。
tell application "Firefox" to activate
delay 0.25
tell application "System Events"
tell process "Firefox"
set frontmost to true
click menu item "Print…" of menu "File" of menu bar 1
delay 0.25
click menu button "PDF" of window "Print"
delay 0.1
keystroke "S"
delay 0.1
keystroke return
repeat until window "Print" exists
delay 0.5
end repeat
keystroke "newFileName"
keystroke return
end tell
end tell
tell application "System Events"
tell process "Firefox"
set frontmost to true
# let's go to the next tab
# (# 123 goes back)
key code 124 using {command down, option down}
end tell
end tell