簡體   English   中英

我怎樣才能自動登錄到這個網站?

[英]How can I automatically login to this website?

我希望在 tampermonkey 中使用 javascript 來抓取https://www.intellizoom.com/這樣當有任何新工作需要我接受時我可以立即收到警報(如果不立即采取行動,工作可能會在幾秒鍾內消失)。 不幸的是,我的登錄最終過期了,網站重定向到https://www.intellizoom.com/login

因此,我想使用與登錄名 URL 匹配的 tampermonkey 腳本,以便在需要時自動重新登錄。

我正在努力讓它發揮作用。 首先,似乎您必須先聚焦所有輸入字段,然后它們才能正確接受來自 javascript 的任何輸入。這適用於添加用戶名和密碼,但僅在登錄按鈕上使用 focus() 會失敗。

如果在控制台中出現消息“單擊”之前,我的測試腳本會成功登錄。 我實際單擊網站頁面中的任意位置。 (因此 5 秒 setTimeout 讓我有時間進行物理點擊 - 用於測試目的),然后登錄按鈕變為藍色。 和;點擊()。 javascript function 然后成功提交登錄信息。

但是,我找不到任何方法來模擬使用 javascript 的物理點擊,所有在元素或坐標上使用 click() 的嘗試都沒有任何作用(控制台中沒有錯誤消息)。 在 click() 之前添加 focus() 也無濟於事。

誰能知道如何通過 javascript 提交該網站的登錄詳細信息?

setTimeout(function(){
    document.getElementById("email").focus();
    document.getElementById("email").value = "username@Domain.co.uk";

    document.getElementById("password").focus();
    document.getElementById("password").value = "password";
},500);

setTimeout(function(){
    console.log("click!");
    document.getElementsByClassName("button large primary is-rounded")[0].click();
},3000);

更新:該解決方案由 Markfila 友情提供 - 此代碼有效:

setTimeout(function(){
    document.getElementById("email").value = "username@Domain.co.uk";
    document.getElementById("password").value = "password";
    let event = new Event("blur");
    document.getElementById("email").dispatchEvent(event);
    document.getElementById("password").dispatchEvent(event);
    document.getElementsByClassName("button large primary is-rounded")[0].click();
},100);

我在這里提出了一個后續問題(因為我不應該在這里直接提出后續問題)。

我認為您不需要焦點,那里使用某種第三方庫作為 ui 並且它不會觸發設置 value 屬性的事件。 經過一些混亂之后,ui 庫似乎正在為 blur 事件設置值。

如果您在設置值后添加它,那么登錄按鈕應該啟用並且您擁有的點擊代碼應該有效

let event = new Event("blur"); 
document.getElementById("email").dispatchEvent(event); 
document.getElementById("password").dispatchEvent(event); 

似乎 window 沒有聚焦,因為如果您單擊 window 然后它將登錄並單擊 window 聚焦它。 您可以嘗試使用var win = window.open("https://www.intellizoom.com/login")然后win.focus()來聚焦 window。

所以整個代碼看起來像這樣:

var win = window.open("https://www.intellizoom.com/login");
win.focus();
setTimeout(function(){
    document.getElementById("email").focus();
    document.getElementById("email").value = "username@Domain.co.uk";

    document.getElementById("password").focus();
    document.getElementById("password").value = "password";
},500);

setTimeout(function(){
    console.log("click!");
    document.getElementsByClassName("button large primary is-rounded")[0].click();
},3000);

我不是 100% 確定這一點,但通過閱讀你的帖子,這就是它讓我想到的。 我希望這有幫助!

暫無
暫無

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

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