【问题标题】:Adding JavaScript event listener with Selenium triggers it automatically使用 Selenium 添加 JavaScript 事件监听器会自动触发它
【发布时间】:2020-08-13 15:52:35
【问题描述】:

由于(根据我的研究)无法使用 selenium 捕获用户输入,我正在尝试使用 JavaScript 事件侦听器。

但是当我通过执行 JavaScript 代码添加事件侦听器时,该函数会自动触发,而我(作为用户)没有做任何事情。此外,无法再次触发该功能。

有谁知道问题可能是什么以及我该如何解决? 仅供参考:我的代码在 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)

脚本一执行,控制台就会显示“成功”,之后该事件将不再触发。我尝试过不同的事件(点击、鼠标悬停...)、不同的功能和具有不同元素的不同网站。

【问题讨论】:

标签: javascript python selenium event-listener


【解决方案1】:

你没有传递一个函数——你实际上只是直接调用

console.log("Success")

这个 ^ 调用函数。您最终传递的实际参数是console.log 的结果,而不是函数本身(如果我记得它只是一个undefined)。如果你想真正传递一个函数,你应该做这样的事情。

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

对于支持 ES6 之前的浏览器,您可以使用:

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

【讨论】:

    【解决方案2】:

    代码完全是一个无限循环,因为它只触发一次,然后再不触发。 建议将您的代码编辑为

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-03-11
      • 2012-12-23
      • 2020-06-13
      • 1970-01-01
      • 2020-03-19
      • 1970-01-01
      • 2023-04-04
      相关资源
      最近更新 更多