使用Linux/Windows CLI行工具模拟JavaScript按钮单击(http请求)



得到了一个经典的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}(

  • 通过cURLcurl -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"

最新更新