我在不同的论坛中发现了很多像我这样的问题,但我找不到能够解决我的问题的答案。
基本上,我想要的是通过命令提示符打开一个URL,它将打开浏览器,处理一个网页,然后我希望它自动关闭。
为什么我需要这个? 我有一个在IIS上运行的应用程序。我需要在我的应用程序中每天运行一些例程。我可以通过运行类似于下面显示的URL来简单地执行这些例程:
http://myapplication.com/DoStuff.aspx?
问题是这完全是手动的。 我想知道是否可以创建一个批处理文件来调用我的URL"启动http://myapplication.com/DoStuff.aspx?",然后我可以在Windows上创建一个任务来运行该批处理文件。除了浏览器不会自动关闭之外,这对我有用。 我的意思是,我可以尝试一下,但在一周结束时,我至少会打开5个窗口。
我尝试过:
我试图通过使用javascript来解决它,但我总是收到这条消息:
scripts may close only the windows that were opened by it
使用" window.close()"创建的javascript函数并不重要,windows不会关闭。
Chrome和Firefox会返回该消息。 IE让我尝试关闭窗口,但如果我真的想关闭它,它会在popUp中询问。
答案 0 :(得分:1)
您需要的可能是无头浏览器,例如 PhantomJS (没有GUI的WebKit浏览器)。我建议你使用 CasperJS 来更轻松地创建脚本......
在您的系统上全局安装Phantom和Casper,并编写一个最小的自动化脚本,如下所示:
var casper = require('casper').create();
casper.start('http://myapplication.com/DoStuff.aspx');
casper.then(function() {
// Do something here...
});
casper.run();
设置cron作业(或Windows等效项)以使用casperjs
bin执行脚本。通常情况下,应该这样做......
答案 1 :(得分:1)
仅使用批处理文件,因为我坚信您不需要JavaScript来执行此操作。
::start a new browser session at the given url
start iexplore "http://www.google.com"
::wait for whatever process to end if you actually have to wait
timeout 15
::kill the browser process
taskkill /im iexplore.exe /f /t
如果它在没有人与之交互的机器上运行,并且您知道您登录的会话将是您离开的最后一个会话,那么您知道您正在进入的会话已经打开了IE。所以你可以颠倒脚本的顺序而不关心时间
::kill the browser already opened
taskkill /im iexplore.exe /f /t
::open a new browser session at the given url
start iexplore "http://www.google.com"
::if you have to wait, but don't know how long... leave the browser window open. We'll close it next time we run this batch file anyway.
答案 2 :(得分:0)
在* nix,您可以创建一个包含
的bash
脚本
#!/bin/bash
/usr/bin/chromium-browser --user-data-dir="/home/USER/.config/chromium-no-flags" "http://myapplication.com/DoStuff.aspx"
在DoStuff.aspx
内,使用setTimeout()
或其他功能在任务完成时调用window.close()
setTimeout(close, 10000)
或
new Promise((resolve, reject) => {
// do asynchronous stuff
resolve(/* value */)
})
.then(close)
.catch(close)
对于等于cron
的* indows,请参阅
另见