Virtual machine 将PyAutoGUI与VirtualBox/虚拟机一起使用

Virtual machine 将PyAutoGUI与VirtualBox/虚拟机一起使用,virtual-machine,pyautogui,Virtual Machine,Pyautogui,我试图让pyautogui的locateOnScreen在虚拟机上工作,这样我就可以一次运行多个测试。我希望虚拟盒中有一些我没有的设置可以解决这个问题。代码如下: import pyautogui import win32com.client autoit = win32com.client.Dispatch("AutoItX3.Control") autoit.run(application_path) open_application = autoit.winWait("title_of

我试图让pyautogui的locateOnScreen在虚拟机上工作,这样我就可以一次运行多个测试。我希望虚拟盒中有一些我没有的设置可以解决这个问题。代码如下:

import pyautogui
import win32com.client
autoit = win32com.client.Dispatch("AutoItX3.Control")

autoit.run(application_path)

open_application = autoit.winWait("title_of_app", "", 10)
header_logo = pyautogui.locateOnScreen("header_logo.png", 10)

if open_application == 1 and header_logo is not None:
    print "Detected application window."
else:
    if open_application == 0:
        print "Failed to detect application window."
        assert open_application 
    else:
        print "Failed to detect logo in header of application window."
        assert header_logo
在虚拟机之外,这一切都过去了,而在虚拟机内部,我总是遇到“在应用程序窗口的标题中检测不到徽标”。我已经尝试了很多次调整图像,但没有任何效果。主桌面是Windows7 64位,虚拟机是Windows7 32位。有没有办法让它在VirtualBox或任何VM软件上运行

编辑:
我应该补充一点,AutoIt的winWait返回1或0,PyAutoGUI的locateOnScreen返回None或屏幕上图像所在位置的坐标以及所用图像的大小。

这是旧的,但显示为未应答。所以我想我应该把我的评论移到我想出来的地方,找到答案


“我能够解决这个问题。我正在测试的应用程序使用快速渲染(或类似的方式)无论出于什么原因,这都阻止了pyautogui的截图捕捉到它。使用pyqt4,我能够拍摄包含应用程序窗口的截图,将Qimage转换为PIL,并使用pyautogui的“大海捞针”功能(定位功能)在屏幕截图中查找徽标。我不知道是否有更好的方法来处理此问题,但目前它正在工作。”

在处理完此问题后,我得出结论,这是我尝试使用pyautogui测试的应用程序的一个问题。如果我使用pyautogui的屏幕截图功能尝试捕获应用程序的图像,屏幕上除了“应用程序”窗口之外的所有内容都会显示在屏幕截图中。我能够解决此问题。我正在测试的应用程序使用快速渲染(或类似的东西),无论出于什么原因,这都会阻止pyautogui的屏幕截图拾取它。使用pyqt4,我能够截取包含应用程序窗口的屏幕截图,将Qimage转换为PIL,并使用pyautogui的“大海捞针”功能(定位功能)在屏幕截图中找到徽标。我不知道是否有更好的方法来处理这个问题,但目前它正在发挥作用。