簡體   English   中英

從命令行打開Chrome / Chromium,然后將javascript操作發送到chrome / chromium控制台

[英]Open Chrome/Chromium from command line and send javascript action to chrome/chromium console

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

zenity創建的窗口

如您所見,這可行,但是我的問題是:

如何在打開的網址中向chrome / chromium控制台發送javascript命令?

我需要運行一個簡單的命令,例如:

document.getElementById("my_id").value = '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")

選項

接下來的操作取決於對網站的訪問和控制類型。 一些選擇是黑客。

對於以下每個選項,將$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-編寫用戶腳本以在瀏覽器中進行操作

在頁面加載時,使用篡改猴子工具運行用戶腳本,該腳本可提取查詢參數並設置字段。

// ==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。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM