所以我的程序应该做的是在默认的应用程序窗口中找到Mozilla Firefox,然后点击它,并将其更改为Brave Browser。虽然我已经查看了文档,我看到我的代码中的一切都是应该的,但我总是收到这个错误:
File "g:\Default-Browser\main.py", line 9, in <module>
x, y = pyautogui.locateCenterOnScreen('G:\Default-Browser\mozilla.png')
TypeError: cannot unpack non-iterable NoneType object下面是我的代码:
import pyautogui
from time import sleep
pyautogui.press("win")
sleep(.2)
pyautogui.typewrite("default")
sleep(.1)
pyautogui.press("enter")
x, y = pyautogui.locateCenterOnScreen('G:\Default-Browser\mozilla.png')
pyautogui.moveTo(x, y)
pyautogui.click(x, y)
sleep(.3)
x, y = pyautogui.locateCenterOnScreen(['G:\\Default-Browser\\brave.png'])
pyautogui.click(x, y)
pyautogui.hotkey('alt', 'f4')
quit()发布于 2021-07-09 05:11:04
图像未被检测到,因此python不可能解压变量。您的代码只运行一次图像检测,并且,当尝试自动化GUI过程时,加载时间可能随动画、计算机速度等而变化,只检测一次通常不是一个好主意。而且,它不是100%可靠的,它可能需要更多的尝试。当自动化一个过程时,我总是使用一个循环,直到检测到图像。您可以创建一个如下所示的函数:
def detect_image(path, duration=0):
while True:
image_location = pyautogui.locateCenterOnScreen(path)
if image_location:
pyautogui.click(image_location[0], image_location[1], duration=duration)
break这样,你就不会得到这个错误,如果它花了很长时间,由于某种原因找不到图像,那么你可能应该重新拍摄屏幕截图。
另一方面,如果您认为图像每次都会稍有不同,那么可以在pyautogui.locateCenterOnScreen方法中使用confidence参数。置信度越低,越有可能检测到更多不同的图像。但是,如果您将置信度设置得太低,它可能会检测到误报(图像不是您实际正在寻找的图像)。因此,您应该意识到降低置信度可能会产生一些问题。代码如下所示:
pyautogui.locateCenterOnScreen('image.png', confidence=0.5)。
请记住,要使用此功能,您必须使用以下pip命令安装opencv:pip install opencv-python。
最后,如果要从图片中删除颜色,并检测始终保持不变但颜色发生变化的图像,则可以将grayscale参数传递给pyautogui检测方法,该方法会将图像转换为黑白图像,然后进行检测。就像这样:
pyautogui.locateCenterOnScreen('image.png', grayscale=True)
https://stackoverflow.com/questions/68140109
复制相似问题