使用pyautogui python在不同的系统中进行图像搜索不起作用?

2024-04-27 00:38:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用python的pyautogui模型自动安装软件。所以,我从安装屏幕上裁剪了一些图像,比如单击next,接受条款和条件。使用图像搜索,我能够找到屏幕上的图像,并能够点击正确的地区。在我的系统中运行良好。 但是,该脚本在其他系统中不起作用,因为图像搜索不成功。可能是因为图像在我的系统中被剪切,而在其他系统中被搜索。两个系统的分辨率相同,但屏幕大小不同(如15英寸、17英寸)。我的问题是屏幕上的locateOnScreen功能是否在不同的机器上兼容?鉴于我需要在公司的多个系统中部署这种自动化,我如何解决这个问题?代码粘贴如下:

import os
import time
import pyautogui
from pywinauto.application import Application
fsv = Application(backend="win32").start("sandra_24.61.exe")
while(1):
    s = pyautogui.locateOnScreen("C:\\WV_Project\\testcaseAutomation\\images\\ok.png")
    if (s==None):
        print("wait for 1 sec for ok button to come")
        time.sleep(1)
    else:
        pyautogui.click(s.left,s.top)
        print("Ok clicked")
        break
while(1):
    s = pyautogui.locateOnScreen("C:\\WV_Project\\testcaseAutomation\\images\\acceptRadio.png")
    if (s==None):
        print("wait for 1 sec for accept radio button to come")
        time.sleep(1)
    else:
        x=s.left
        y=s.top
        pyautogui.click(s.left,s.top)
        print("accept clicked")
        break;
time.sleep(2)
x = x+366
y=y+78
pyautogui.click(x,y)
print("next clicked")
time.sleep(2)
pyautogui.click(x,y)
time.sleep(2)
print("next clicked")
time.sleep(2)
pyautogui.click(x,y)
print("next clicked")
time.sleep(2)
pyautogui.click(x,y)
time.sleep(2)
print("next clicked")
pyautogui.click(x,y)
time.sleep(2)
print("next clicked")
pyautogui.click(x,y)
print("install clicked")
time.sleep(50)
while(1):
    time.sleep(2)
    try:
        x,y = pyautogui.locateCenterOnScreen("C:\\WV_Project\\testcaseAutomation\\images\\finish.png")
        pyautogui.click(x,y)
        break
    except:
        print("Exception occurred")
print("Sandra is successfully installed.")

Tags: 图像importfor屏幕time系统sleepnext
2条回答

据我所知!问题在于图像分辨率。 在我的公司里,我还有一个机器人,它能自动完成一些复杂的任务。这里所有的显示器都是一样的,但我还是遇到了一些匹配图像的问题。从一台电脑截取的图像在另一台电脑上无法工作。所以我现在正在做的是使用“剪贴工具”在每台电脑上截图。这很容易解决问题,但这个解决方案需要时间。如果您使用的电脑不超过10台或20台,那么此解决方案可能会有所帮助。你知道吗

如果问题存在,您可以尝试降低置信水平,如下所示:

x,y = pyautogui.locateCenterOnScreen("C:\\WV_Project\\testcaseAutomation\\images\\finish.png", grayscale=True, confidence=.5)

尝试使用不同的置信度。 您还需要OPENCV来使用CONFIDENCE。 使用“pip install opencv python”从命令提示符安装opencv。你知道吗

如果在1366x768中创建脚本并在1920x1080中尝试,则可以更改分辨率,因为需要添加新图像

有两种方法可以使用:

1:>;替换图像

2:>;添加x,y位置

方式:

xy = pyautogui.locateCenterOnScreen('your directory', grayscale=True, confidence=.5)
pg.click(xy)

3:>;您可以使用inspect捕获图标

您也可以单击鼠标右键,然后单击“检查”转到“应用程序”,在“图像”文件夹中找到该图像,然后保存它,它将在所有屏幕上工作

相关问题 更多 >