得到了一个经典的JS按钮:
<button class="my-button" OnClick="(windows.open('https://anotherwebsite.com'))">CLICK ME</button>
我想用一个CLI工具触发这个按钮,比如cURL。这可能吗?
在提问之前,我做了研究,我发现了很多相反的问题(如何卷曲成javascript(,但我没有。
我已经知道你可以使用硒w/python/java。。。或者任何其他的替代方案,比如Jaunt w/java,但它必须是开箱即用的,我不想被一些依赖性所困扰,我希望它很轻。我听说过XHR请求,但我有点困惑,因为我看到了如何通过方法/函数用特定语言运行它们,而不是用cli行工具。
附言:我对不感兴趣
curl https://anotherwebsite.com
它必须触发javascript,就像我直接进入我的chrome dev工具>控制台并键入windows.open('labla'(.一样
您可以使用Chrome驱动程序和cURL来完成所需的行为。但是要做好准备,需要很多步骤:(
您需要执行以下操作:
- 从上述链接下载驱动程序并将其解压缩到任何文件夹
- 启动驱动程序(Unix上的
./chromedriver &
或Windows上的chromedriver.exe
(。你会看到消息,找到端口。在我的情况下,消息是%
在端口9515上启动ChromeDriver 80.0.3987.106(f68069574609230cf9b635cd784cfb1bf81bb53a refs/branch-heads/3987@{#882}(
- 通过cURL
curl -d '{ "desiredCapabilities": { "caps": { "nativeEvents": false, "browserName": "chrome", "version": "", "platform": "ANY" } } }' http://localhost:9515/session
连接到驱动程序会话。在该命令的输出中,找到sessionId,在我的情况下,它是e2fafa7a017a6be7136a02af694f5493 - 用按钮
curl -d '{"url":"<your url>"}' http://localhost:9515/session/e2fafa7a017a6be7136a02af694f5493/url
打开页面 - 找到按钮(我使用
name
作为定位器,但我相信class
也会起作用(curl -d '{"using":"name","value":"<your-value>"}' http://localhost:9515/session/27f4262ab044392b05138540055a8fd6/element
。在该命令的输出中,您必须找到ELEMENT
值。在我的情况下,它是0.044231492091793445-1 - 最后,点击它!
curl -X POST http://localhost:9515/session/e2fafa7a017a6be7136a02af694f5493/element/0.044231492091793445-1/click
- 你做到了,现在关闭会话
curl -X DELETE http://localhost:9515/session/e2fafa7a017a6be7136a02af694f5493
正如您所看到的,您必须执行许多操作,但我相信它符合您的要求。有关更多信息,请参阅此链接和此链接。祝你好运
一个简单的方法是使用jQuery-ajax,但如果您想要vanilla-js,则需要通过XMLHttpRequest
创建XHR请求。下面将创建一个GET请求。你需要记住的是CORS。它是一种机制,允许从提供第一个资源的域(源(之外的另一个域请求网页上的受限资源。不幸的是,与curl浏览器不同的是,它们确实有额外的安全层,因为它们比终端更受欢迎。
以下代码的来源
var xhReq = new XMLHttpRequest();
xhReq.open("GET", "sumGet.phtml?figure1=5&figure2=10", false);
xhReq.send(null);
var serverResponse = xhReq.responseText;
alert(serverResponse); // Shows "15"