gpt4 book ai didi

javascript - 在 Python Selenium 中检测用户键/鼠标

转载 作者:行者123 更新时间:2023-11-29 21:51:33 25 4
gpt4 key购买 nike

我使用 Selenium 浏览器进行日常浏览,我想在任何页面上按下某些键时触发一些代码。起初我以为我可以在每个注册键/鼠标输入的页面上加载 javascript,但实际上我真的更喜欢有一些 python 列表可用于过去的键/鼠标点击,例如我在 javascript 中的关键示例:

var myhistory = []

document.addEventListener("keydown", keyDownTextField, false);

function keyDownTextField(e) {
var keyCode = e.keyCode;
myhistory.push(keyCode)
}

有没有办法在纯 Python/Selenium 中做到这一点?

最佳答案

我会尝试什么:

  1. 执行在文档主体注册的 javascript

    <body onkeyup="my_javasctipt_keyup()" and onkeydown="my_javasctipt_keydown()"> 

    使用 browser.execute_script。 (部分解决,见问题)

  2. 将按键弹起和按键按下事件保存在 javascript 的变量中。 (已解决,见问题)

  3. 使用 browser.execute_script 返回变量。

我不确定的是:

  • browser.execute_script 的返回值可能只返回 json 可序列化对象或字符串
  • 如果在定义自己的事件监听器的子元素中使用 body 中的 keyup 和 keydown 可能不起作用

希望对您有所帮助。如果有任何代码结果形成这个,我很想知道。

这段代码是我认为应该有效的:

from selenium import webdriver
browser = webdriver.Firefox()
browser.execute_script("""var myhistory = []

document.addEventListener("keydown", keyDownTextField, false);

function keyDownTextField(e) {
var keyCode = e.keyCode;
myhistory.push(keyCode)
}""")
def get_history():
return browser.execute_script("myhistory")

# now wait for a while and type on the browser
import time; time.sleep(5000)

print("keys:", get_history())

重点是,selenium 的代码永远不能在浏览器处理键盘输入的同时运行。因此,需要在 javascript 中处理事件,保存结果,例如在一个数组中,然后,当询问 selenium 时,该数组返回给 Python。

关于javascript - 在 Python Selenium 中检测用户键/鼠标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28889401/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com