我有一些脚本(AutoIt)浏览 YouTube 以获取热门视频列表等。它不涉及鼠标点击(只是击键)。该脚本需要很长时间才能完成,在此期间我无法使用我的电脑(它需要激活窗口才能在上面工作)。
对此我能做些什么吗?这些脚本可以从服务器或类似的东西运行吗?
我有一些脚本(AutoIt)浏览 YouTube 以获取热门视频列表等。它不涉及鼠标点击(只是击键)。该脚本需要很长时间才能完成,在此期间我无法使用我的电脑(它需要激活窗口才能在上面工作)。
对此我能做些什么吗?这些脚本可以从服务器或类似的东西运行吗?
我遇到了类似的问题:必须在 Windows Server 上使用 AutoIt 运行自动化,而整个事情必须是无头的。使用远程桌面根本不起作用,因为那时我不得不一直保持客户端打开和最大化。
简短的解决方案:在Windows Server中安装一个VNC服务器,从另一台计算机打开一个客户端,登录并关闭客户端。由于 AutoIt 脚本是由 Jenkins 作业启动的,因此在关闭客户端之前,必须通过 Web 界面启动 Jenkins 小程序。
顺便说一句,我从这篇文章中得到了这个想法:如何运行远程无头 GUI 自动化。
正如 Johannes 所说,AutoIt 可能不适合(AutoHotkey 也是如此),但您可以查看其他语言存在的许多 GUI 和 Web 测试框架。使用其中一些,您可以运行“无头”浏览器(一种像浏览器一样导航网络的程序,但没有可见窗口);或者您可以在 Xvfb X11 服务器等虚拟显示器上运行标准浏览器。如果服务器(或将要运行的任何地方)运行类似 Unix 的操作系统,这将是最简单的,但在 Windows 上也可以。
Selenium Webdriver 似乎是编写脚本和测试实际浏览器的一个非常流行的选择。它本机是 Java,但具有对 Ruby 等语言的绑定。它还可以挂接到名为 HtmlUnit 的东西,它也是 Java;这是最流行的无头浏览器之一。另一个(相对较新的)是 phantom.js,它在 Javascript 中,但(再次)具有其他语言的绑定。
据我所知,除非用户帐户登录,否则这将不起作用。您可以尝试查看是否可以将其转换为 exe 并将其作为服务运行,但即便如此我认为这不会起作用。如果你发现了,请告诉我!
您可以:
隐藏您的窗口(SetWindowState @SW_HIDE)或类似的东西......并使用 ControlClicks(如果它们是原始控件!)
或者
隐藏您的窗口并使用 SendControl
或者
使用 SendKeepActive
或者
使用 ie.au3 之类的 OLEObjects 进行自动化。
祝你好运