繁体   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