簡體   English   中英

使用 Selenium 添加 JavaScript 事件監聽器會自動觸發它

[英]Adding JavaScript event listener with Selenium triggers it automatically

由於(根據我的研究)無法使用 selenium 捕獲用戶輸入,因此我正在嘗試使用 JavaScript 事件偵聽器。

但是,當我通過執行 JavaScript 代碼添加事件偵聽器時,function 會自動觸發,而我(作為用戶)沒有做任何事情。 此外,無法再次觸發 function。

有誰知道問題可能是什么以及我該如何解決? 僅供參考:我的代碼在 Python 3.8

提前謝謝你,拉斐爾

# this is a self defined function that creates a new selenium WebDriver
browser = gf.create_browser(headless=False)

browser.get("https://www.google.com")

browser.execute_script('document.getElementById("hplogo").addEventListener("mouseover",console.log("Success"))')

time.sleep(90)

腳本一執行,控制台就會顯示“成功”,之后該事件將不再觸發。 我嘗試過不同的事件(點擊、鼠標懸停、...)、不同的功能和不同的網站具有不同的元素。

你沒有通過 function - 你實際上只是直接調用

console.log("Success")

這個 ^ 調用 function。 您最終傳遞的實際參數是console.log的結果,而不是 function 本身(如果我記得只是undefined )。 如果你想實際傳遞一個 function,你應該做這樣的事情。

() => console.log("Success")

對於 ES6 之前支持的瀏覽器,您可以使用:

function(){console.log("Success")}

該代碼完全是一個無限循環,因為它只觸發一次,然后在它不觸發之后。 建議將您的代碼編輯為

addEventListener("mouseover",{console.log("Success")})

暫無
暫無

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

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