我试图让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或图像在屏幕上的位置坐标和所用图像的大小。
答案 0 :(得分:1)
这是旧的,但显示为未答复。因此,我想将自己想出的评论移至答案。
”“我能够解决此问题。我正在测试的应用使用快速的时间进行渲染(或类似的操作),并且由于任何原因,这都会阻止pyautogui的屏幕截图使用它。使用pyqt4 ,我可以截取包含应用程序窗口的屏幕截图,将Qimage转换为PIL,并在haystack函数(定位函数)中使用pyautogui的needle在屏幕截图中找到徽标。我不知道是否有更好的方法处理这个,但是现在它正在工作。”