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

时间:2016-07-21 14:59:24

标签: 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_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

虚拟机外部传递,内部我总是遇到"未能在应用程序窗口标题中检测到徽标"。我试过调整图像很多,没有什么可以采取的。主桌面是Windows 7 64位,VM是Window 7 32位。有没有办法让它在VirtualBox或任何VM软件上运行?

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

1 个答案:

答案 0 :(得分:1)

这是旧的,但显示为未答复。因此,我想将自己想出的评论移至答案。

”“我能够解决此问题。我正在测试的应用使用快速的时间进行渲染(或类似的操作),并且由于任何原因,这都会阻止pyautogui的屏幕截图使用它。使用pyqt4 ,我可以截取包含应用程序窗口的屏幕截图,将Qimage转换为PIL,并在haystack函数(定位函数)中使用pyautogui的needle在屏幕截图中找到徽标。我不知道是否有更好的方法处理这个,但是现在它正在工作。”