从技术上讲应该是自动化的,但是远非如此简单。
您的问题可以分为两部分:离线处理和上传自动化。
离线处理
假设您的图像处理代码完全是浏览器中的JavaScript(而不是调用本地库的模块化节点程序),则可以在浏览器中进行所有处理。
可以“ read”处理,处理和downloaded文件,而无需将任何内容发送到服务器。
该处理甚至可以在background thread中进行,从而保持UI响应能力,例如不错的进度条。
可以使用Service Worker或静态html + javascript在线托管代码本身。
一旦被访问或部署,两者都可以离线打开和执行。
(请注意,Chrome严格限制了静态html,包括对网络工作者的严格限制。
Google希望您保持在线状态。)
上传自动化
如上所述,可以通过页面内JavaScript读取通过文件输入选择或拖放到浏览器中的文件,但我将其传统上称为“上传”操作。
Chrome具有一些自动化扩展,最著名的是Kantu,但是由于Chrome的security restriction,它们无法处理文件上传。
因此,如果要自动选择文件,则需要使用本机的浏览器外自动化工具,例如Kantu的XModules,AutoHotkey或SikuliX。存在商业解决方案,但是由于您没有无头浏览器的特殊要求,因此存在类似的限制。
-
AutoHotkey将专注于模拟键盘(打开浏览器,等待5秒钟,按Tab 10次,按Enter,等待2秒钟,键入文件名,按Enter,依此类推),并且可以编译为一个可部署的exe。
-
Sikulix的功能更强大,但也更难分发。只是Java运行时大于浏览器。
-
Kantu + XModules介于两者之间。用户将需要安装浏览器扩展,和本机扩展,但是一旦完成,浏览器中的所有事情都会(或多或少)发生。
这三种方法都涉及模拟键入文件名,因为据我所知,没有一种更简单的方法可以在用户启动的(无头)Chrome中自动执行该文件。
图像文件的名称可以作为参数传递给AutoHotkey和Sikulix的命令行,也可以存储在文件中并在脚本为Kantu的情况下由脚本读取。
在所有三种情况下,自动化都会模拟用户,并且真实用户在脚本运行时切勿触摸计算机,否则自动化会中断。
命令行如何?
或者,如果您的目标是自动化而不部署浏览器,则可以考虑使其成为命令行node.js程序,并将其打包为exe。
可分发内容比已编译的AutoHotkey重,但是活动部件少得多,因此可靠得多:
- 独立于Chrome版本或XModules。
- 所有处理过程都是在自己的过程中进行,而不是劫持用户的Chrome。
- 可以无头执行,对于自动化非常重要。
- 灵活的命令行参数。
但是我喜欢浏览器自动化,它非常简单
再想一想。
根据我的经验, 许多事情都会使浏览器/ GUI自动化失效:
- 异常的屏幕分辨率,浏览器缩放,操作系统缩放或最后一次记住的Chrome大小,会使您的页面失真至无法识别。
- 可更改页面元素(例如广告拦截器)的浏览器扩展。
- IME和其他使用热键拦截键盘输入的程序。
- 弹出式程序,例如防病毒,Windows更新或插入CD。
- 意外锁定,睡眠,注销,键盘上的剩余键或电源中断。
- 或者一个简单的Chrome更新程序,可以打破您所依赖的100种东西。
所以,是的,这是您为什么要精打细算地完成计算机自动化的原因。
我的代码安全吗?
如果您担心脚本的安全性,请不要担心。
您希望处理在客户端发生的那一刻,猫就掉了。
从技术上讲,您的代码受版权保护。
但是祝你好运。
如果您想使代码不进行提取/解密/取消混淆/任何形式的处理(咳嗽),则需要将其保留为在线黑匣子,而无需客户端处理。
,
构建Web应用程序的一种方法是:
1)将console.log重定向到标准输出(请参见此处:In Chrome,how can I get the javascript console output to stdout/stderr),可能带有适当的--log-level
标志并将错误消息重定向到其他位置,因此某些随机消息不会破坏整体东西,
2)从脚本级别开始,而不是/,除了保存结果文件外,console.log记录在Base64中,
3)并从CLI端使用使Base64成为适当文件(以及任何其他处理)的管道。
,
Selenium WebDriver应该足够了,请使用ChromeDriver在Chrome上自动执行任务。
要上传文件,请选择项目并使用sendKeys read more here:
driver.findElement(By.id("myUploadElement"))
.sendKeys("<absolutePathToMyFile>");
,
使用PowerShell可以实现所有这一切。使用Powershell,您可以打开浏览器(使用Powershell可以自然而然地支持IE)。您可以打开网页,填写表格,下载或上传数据,获取对象,检查等。
在webpage下访问以获取更多详细信息:
希望这会有所帮助。
本文链接:https://www.f2er.com/3164847.html