如何使用Sikuli自动截取窗口截图?
这里有个简单的问题:我想用Sikuli在Mac上截取一个窗口的屏幕,这个操作是按下CMD+SHIFT+4,然后再按空格键,最后点击一个窗口。
不过,我在按CMD+SHIFT+4的时候遇到了一些麻烦。这个方法不行:
keyDown(KEY_META)
keyDown(Key.SHIFT)
wait(1)
type("4")
wait(1)
keyUp(Key.SHIFT)
keyUp(KEY_META)
有没有人有什么想法?我也愿意尝试其他的方法来按这个组合键,比如我知道复制这个方法效果很好:
type("c",KEY_META)
但是,它不接受三个参数。
2 个回答
1
我找到了一种更好的解决方案,确实有效:
screen = Screen()
scr_img = screen.capture(screen.getBounds())
scr_img.save("C:\Screenshots", "screenshot")
Screen.capture() 这个方法会返回一个叫做 ScreenImage 的类的实例,这个类里面有一些方法,比如:'save'、'saveInBundle'、'getFile' 和 'getFilename'。其中,save() 方法会在你提供的前缀参数后面加上一个唯一的数字。
9
type("4", KeyModifier.CMD+KeyModifier.SHIFT)
或者,更好的是:
import shutil
import os
screenshotsDir = "absolute-path-to-a-folder"
img = capture(some_region)
shutil.move(img, os.path.join(screenshotsDir, "some-name.png"))
其中 some_region 是:
some_region = SCREEN # for whole screen
或者
someRegion = App.focusedWindow() # for the frontmost window
这样做的好处是,你可以控制截图的文件名。