Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有人知道在Python中自动单击HTML元素的好方法吗?(例如,在像素画布中)_Python_Canvas_Bots - Fatal编程技术网

有人知道在Python中自动单击HTML元素的好方法吗?(例如,在像素画布中)

有人知道在Python中自动单击HTML元素的好方法吗?(例如,在像素画布中),python,canvas,bots,Python,Canvas,Bots,去年reddit发布了一个愚人节的社交实验,这是一个像素画布,允许用户点击网格上任何像素的颜色;他们需要等待一定的时间才能再次点击。实验结束后,出现了几个重复的站点,其中包括 我想制作一个机器人,它可以自动点击画布上的一个给定像素,因为当时我正在注册一个Python类,所以我想我会学习Python来完成它。最初,我尝试使用一个用于原始画布的机器人作为模板,但新画布太不一样,无法正常工作 但是,当我发现selenium模块时,我认为尝试一下是个好主意,因此我编译了以下代码: import time

去年reddit发布了一个愚人节的社交实验,这是一个像素画布,允许用户点击网格上任何像素的颜色;他们需要等待一定的时间才能再次点击。实验结束后,出现了几个重复的站点,其中包括

我想制作一个机器人,它可以自动点击画布上的一个给定像素,因为当时我正在注册一个Python类,所以我想我会学习Python来完成它。最初,我尝试使用一个用于原始画布的机器人作为模板,但新画布太不一样,无法正常工作

但是,当我发现selenium模块时,我认为尝试一下是个好主意,因此我编译了以下代码:

import time
import random
from selenium import webdriver
driver = webdriver.Firefox()
driver.get("http://origami64.net/place.php")
black=driver.find_element_by_id('#222')
black.click()
canvas=driver.find_element_by_id('c0')
time.sleep(5)
x=0
y=0
while (1):
    driver.execute_script("window.scrollTo(x, y)")
    canvas.click()
    x=x+1
    y=y+1
    time.sleep(2.5)
我知道,这很不重要。除了点击画布上的一个点,它没有什么作用

那么我如何让它点击其他像素呢?我尝试使用偏移量实现“移动到元素”,但这不断导致MoveTargetOutOfBoundsException错误,因为画布比窗口中的视口大。因此,您必须缩小以查看整个画布,以便可以放置一个像素

我花了几个星期的时间试图让move_to_element_和_offset为我工作,即使在我完成之后,我也无法实现我的目标,因为事实证明,selenium中的偏移坐标不是按元素的像素计算的,而是按屏幕上的文字像素计算的。因此,除非有办法使缩放与屏幕上的像素与元素中的像素的比例完全线性,否则我无法真正选择偏移的范围

所以硒似乎是我的死胡同。我意识到当画布收到一个点击时,会有一个JavaScript代码在启动。如果我可以得到脚本中的一部分,它可以确定鼠标在我的命令下运行时的位置,并且我可以用我自己的值来输入鼠标的x,y坐标,那么也许我可以做到这一点?我不知道


老实说,我现在不确定该往哪个方向走。

好吧,通过研究,我已经确定不可能轻易做到这一点。如果你想成为机器人,只使用网页抓取就方便多了。

这并不是你自己问题的答案。如果可以通过网页抓取实现,那么答案应该解释如何使用网页抓取来自动点击你想要的像素。