我正在使用Chrome来获取由javascript生成的网页的HTML。完成所有这些操作的AppleScript需要每2分钟运行一次。一切都很完美,除了我显然需要Chrome在后台完全完成这项工作。我的脚本包含Chrome的以下用途(以及设置theTab
的块,这似乎不会导致Chrome出现在前面):
set URL of theTab to theURL
set isLoading to (loading of theTab)
execute front window's active tab javascript javascriptLocation
set theSource to execute front window's active tab javascript "document.documentElement.outerHTML"
这一行:
tell application "Finder" to set visible of process "Google Chrome" to false
在上述每条线之后或者根本不产生任何隐藏,或者最好Chrome在屏幕上闪烁然后消失。我觉得这很令人分心。
有没有办法让应用程序在后台运行可靠而永久地?或者,如果没有这个,是否有一种无形的方法可以让javascript在服务器端执行,这样一个AppleScript可以获得它生成的源代码?
Chrome 66.0.3359.181在Mac OS 10.11.6,Applescript 2.5上运行。
答案 0 :(得分:2)
以下不是我发布的问题的答案,但 是我试图解决的问题的答案,这就是我发布问题的原因。
正如我的问题所述,我需要掌握一些javascript在网站上生成的HTML(不受我的控制)。由于网站上的CORS限制,我无法进行客户端扫描。我尝试了列出here列出的跨域工具,但无法让它们发挥作用。
所以我使用Chrome的AppleScript命令execute
来首先执行javascript(生成HTML),然后第二次用document.documentElement.outerHTML
抓住HTML 。但是,让Chrome全天每隔2分钟闪存一次就会闪现在屏幕上。
结果Chrome也可以从命令行在headless mode中运行,而恰好有一个选项可以运行javascript并返回生成的HTML!
因此,我的代码变得更加简单,并且我不必一直在我的应用列表中使用Chrome。我是快乐的编码器: - )
这是获取我需要的网站上生成的HTML的一行:
set theSource to (do shell script ((quoted form of POSIX path of googlePath) & " --headless --dump-dom " & theURL))
再次感谢@matt。我没有听说过无头模式,如果没有你对PhantomJS的建议,我永远也找不到这个模式!