pyautogui.click
来自动化一个简单的cookie点击游戏。我试图通过使用
locateonscreen
图像函数和
random
模块找到图像,然后在图像中随机单击,因为我认为这对我的学习更为实用,并且更像是人类。找到图像时 - 一切都起作用。当找不到图像时 - 我会得到一个
AttributeError: 'NoneType' object has no attribute 'left'
,因为在这种情况下我的盒子不存在。我正在寻找帮助编程逻辑以尝试查找和想象的帮助,如果它发现它随机单击它,否则请尝试找到下一个图像。
在存在图像时,我的工作是: While坐标是单击一个静态位置,然后在计数器到达特定点后寻找并随机单击图像。然后返回静态位置继续单击并循环。
import pyautogui as gui
import random
gui.PAUSE = 0.01
gui.moveTo(x=383,y=576)
counter = 1
while gui.position() == (383,576):
gui.click()
counter += 1
if counter % 300 == 0:
def randomClick(box):
x_click = int(random.uniform(box.left, box.left+box.width))
y_click = int(random.uniform(box.top, box.top+box.height))
return (x_click, y_click)
Bank = gui.locateOnScreen('Bank.png')
gui.moveTo(randomClick(Bank))
gui.click()
def randomClick(box):
x_click = int(random.uniform(box.left, box.left+box.width))
y_click = int(random.uniform(box.top, box.top+box.height))
return (x_click, y_click)
Factory = gui.locateOnScreen('Factory.png')
gui.moveTo(randomClick(Factory))
gui.click()
def randomClick(box):
x_click = int(random.uniform(box.left, box.left+box.width))
y_click = int(random.uniform(box.top, box.top+box.height))
return (x_click, y_click)
Mine = gui.locateOnScreen('Mine.png')
gui.moveTo(randomClick(Mine))
gui.click()
def randomClick(box):
x_click = int(random.uniform(box.left, box.left+box.width))
y_click = int(random.uniform(box.top, box.top+box.height))
return (x_click, y_click)
Farm = gui.locateOnScreen('Farm.png')
gui.moveTo(randomClick(Farm))
gui.click()
def randomClick(box):
x_click = int(random.uniform(box.left, box.left+box.width))
y_click = int(random.uniform(box.top, box.top+box.height))
return (x_click, y_click)
Grandma = gui.locateOnScreen('Grandma.png')
gui.moveTo(randomClick(Grandma))
gui.click()
def randomClick(box):
x_click = int(random.uniform(box.left, box.left+box.width))
y_click = int(random.uniform(box.top, box.top+box.height))
return (x_click, y_click)
Cursor = gui.locateOnScreen('Cursor.png')
gui.moveTo(randomClick(Cursor))
gui.click()
gui.moveTo(x=383,y=576)
对Pyautogui的版本进行缩减,当它找不到图像时,它会引起异常或返回
None
None
,所以您要做的就是调用定位函数,只需检查它是否没有返回
None
。
Bank = gui.locateOnScreen('Bank.png')
if Bank is not None:
gui.moveTo(randomClick(Bank))
gui.click()
还请注意,函数只需要定义一次,因此您应该在程序的一开始就定义一次。然后,您可以多次称呼它。应该触发“ ImagenotFoundException”
randomClick