gpt4 book ai didi

javascript - 如何在 python 中使用 selenium 和 javascript 跟踪鼠标事件和位置?

转载 作者:行者123 更新时间:2023-11-30 19:03:21 33 4
gpt4 key购买 nike

我正在努力获取元素详细信息,同时通过在页面上执行 javascript 函数在 python 中的 selenium 网络驱动程序中单击该元素。

但它没有像我预期的那样工作,即使我使用异步方法从 javascript 到 python 获取元素详细信息。但我仍然无法在服务器端 python 代码中获取元素详细信息。

请为这种情况提供更好的解决方案。

示例代码

@asyncio.coroutine
def mouseevent(driver):
while true:
mouse =driver.execute_script('''
var x= onclick = function(e){
return e.target;
}
''')
print(mouse)

driver=webdriver.Chrome(Chrome)

driver.implicitly_wait(30)
driver.maximize_window()
driver.get("https://www.google.com/")


loop = asyncio.get_event_loop()

tasks = [
asyncio.ensure_future(mouseevent(driver))]
loop.run_until_complete(asyncio.wait(tasks))
loop.close()

提前致谢。

最佳答案

也许有更好的方法,但这段代码对我有用。


首先,我在开始时使用默认值创建变量 window.x,这样我就可以一直检查它的值 - 即使我没有点击任何元素。

driver.execute_script('window.x = null;')

稍后我将分配给 body 函数,当我单击 body 时将执行该函数 - 它会将值分配给 window.x

driver.execute_script('document.body.addEventListener("click", function(e) { window.x = e.target;})')

在循环中我只检查这个变量的值。

while True:
print(driver.execute_script('return window.x'))
time.sleep(0.5)

它需要检查值是否在循环之间更改,或者它应该运行将值从 window.x 复制到 ie 的函数。 window.y,接下来清除 window.x 并返回 window.y - 这样它只会获得一次值。

while True:
print(driver.execute_script('window.y = window.x; window.x = null; return window.y'))
time.sleep(0.5)

import selenium.webdriver
import time

url = 'https://stackoverflow.com'
driver = selenium.webdriver.Firefox()
driver.get(url)

driver.execute_script('window.x = null;')

driver.execute_script('document.body.addEventListener("click", function(e) { window.x = e.target;})')

while True:
print(driver.execute_script('window.y = window.x; window.x = null; return window.y'))
time.sleep(0.5)

编辑: 我找到了可以更好地解决问题的答案:Javascript - Track mouse position

关于javascript - 如何在 python 中使用 selenium 和 javascript 跟踪鼠标事件和位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59262263/

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