如何正确搜索并随机单击多个图像?

问题描述 投票:0回答:1
我的初始Python课程中的一个通过在特定的山脉上使用

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
python random pyautogui
1个回答
0
投票
None

,所以您要做的就是调用定位函数,只需检查它是否没有返回

None
Bank = gui.locateOnScreen('Bank.png')
if Bank is not None:
    gui.moveTo(randomClick(Bank))
    gui.click()
还请注意,函数只需要定义一次,因此您应该在程序的一开始就定义一次。然后,您可以多次称呼它。
    

应该触发“ ImagenotFoundException”

randomClick

    

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.