gpt4 book ai didi

javascript - 从命令行打开 Chrome/Chromium 并将 javascript 操作发送到 chrome/chromium 控制台

转载 作者:行者123 更新时间:2023-12-03 01:36:42 29 4
gpt4 key购买 nike

Ubuntu 18.04 上,我尝试创建一个提醒来提醒我每天跟踪我的工作日志。

创建sh文件put_hours.sh

#!/bin/bash

zenity \
--forms \
--title="TIME TRACKING" \
--text="Please track your time" \
--add-entry="¿ What have you done ?" \
--ok-label "GO"

case $? in
0) chromium-browser http://site/that/I/want/to/open
;;
1)
;;
esac

使其可执行

chmod +x put_hours.sh

运行

./put_hours.sh

the window created by zenity

正如你所看到的,这是可行的,但我的问题是:

如何向打开的网址中的 chrome/chromium 控制台发送 javascript 命令?

我需要运行一个简单的命令,例如:

document.getElementById("my_id").value = 'nothing to do'

作为字符串发送的值'nothing to do'应该是Zenity打开的窗口传递的值。

我使用 Zenity 制作窗口,但我并没有被迫使用这个软件。

最佳答案

首先,获取值

单击GO后,Zenity 将打印用户输入到标准输出的小时数。

第一步是修改脚本以捕获结果并将其分配给变量:

hours=$(zenity \
--forms \
--title="TIME TRACKING" \
--text="Please track your time" \
--add-entry="¿ What have you done ?" \
--ok-label "GO")
<小时/>

选项

您接下来可以执行的操作取决于您对网站的访问和控制类型。有些选项是 hack。

对于以下每个选项,将 $hours 变量作为查询参数传递给网站,例如:

case $? in
0) chromium-browser "http://site/that/I/want/to/open?hours=$hours"

选项 A - 网站支持通过查询参数填充字段

你可能很幸运,上面的方法就可以了。如果它首先不起作用,您可能有错误的查询参数名称。

要确定正确的查询参数名称是什么,请检查源代码以及手动提交表单时它的行为方式。

例如https://www.google.com?q=pre+populate+the+search+bar

选项 B - 编写用户脚本以在浏览器中执行此操作

使用Tamper Monkey用于在页面加载时运行用户脚本的工具,该脚本会提取查询参数并设置字段。

// ==UserScript==
// @name Set Hours
// @match http://site/that/I/want/to/open*
// ==/UserScript==
(function() {
var urlParams = new URLSearchParams(window.location.search); // Reference: https://stackoverflow.com/a/47566165/241294

if (urlParams.has('hours')) {
var hours = urlParams.get('hours');

document.getElementById("my_id").value = hours;

alert('well done ad3luc you did ' + hours + ' hours today');
}
})();

当然,缺点是现在逻辑位于两个地方,您的脚本和浏览器。

这是一个 hack,但我确实喜欢关注点分离。该脚本将值发送到网站。网站,设置字段值。

您还需要确保您选择的参数不会与网站使用的任何现有查询参数发生冲突。

选项 C - 修改网站

更改网站的源代码,使其支持选项 A。

关于javascript - 从命令行打开 Chrome/Chromium 并将 javascript 操作发送到 chrome/chromium 控制台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51040609/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com