如何在Mac上通过Applescript或shell重置Google Chrome?

时间:2014-04-08 01:25:53

标签: google-chrome applescript

这是我到目前为止所拥有的:

set chrome_clear_url to "chrome://settings/clearBrowserData"
set chrome_settings_url to "chrome:///settings"
tell application "Google Chrome" to quit
delay 1
tell application "Google Chrome" to launch
delay 1
tell application "Google Chrome" to activate
delay 2
tell application "Google Chrome" to open location chrome_clear_url
delay 2
tell application "Google Chrome"
    execute front window's active tab javascript "document.getElementById('clear-browser-data-commit').click();"
end tell
delay 2
tell application "Google Chrome" to open location chrome_settings_url
delay 2
tell application "Google Chrome"
    execute front window's active tab javascript "document.getElementById('reset-profile-settings').click()"
end tell
delay 2
return

这回复时缺少值:

execute active tab of window 1 javascript "document.getElementById('clear-browser-data-commit').click();"
    --> missing value

如何通过AppleScript正确加载设置并重置浏览器?我想我也可以使用非Applescript解决方案,只要他们提高效率。

2 个答案:

答案 0 :(得分:3)

你自己的答案肯定是去这里的方式。

但是,这个答案解释了为什么JavaScript交互不起作用;这里使用的技术 在其他情况下可能派上用场


问题不在AppleScript代码中,而是在 JavaScript 代码中:

问题是chrome://settings/...页面中的HTML源代码使用<iframes>作为主要内容,因此直接使用document.getElementById()访问其元素不起作用 - 您需要定位 iframe 元素的document对象。

很遗憾,由于相关<iframe>元素的网址chrome://settings-frame/settings与封闭网页(settingssettings-frame)有不同的“域名”,出于安全原因,Chrome不允许您访问该框架的单独document对象(同源策略);换句话说:document.getElementsByTagName('iframe')[1].contentDocument.getElementById('clear-browser-data-commit')将不起作用。

但是,您只需直接加载<iframe>网址,如以下代码段所示:

tell application "Google Chrome"
  open location "chrome://settings-frame/clearBrowserData" # !! The *iframe* URL!
  tell active tab of window 1 to execute javascript "
    window.addEventListener('load', function() { 
      document.getElementById('clear-browser-data-commit').click(); 
    });"
end tell

请注意对window对象的load事件使用侦听器,以确保仅在页面完全加载后才进行.click()尝试 - 接近{{3} }}

答案 1 :(得分:2)

这种方法更直接,并且确认可行。

# reset Google Chrome with Applescript and Shell
tell application "Google Chrome" to quit
do shell script "rm -rf ~/Library/Application\\ Support/Google/Chrome/Default"