在 Python 里利用了 PIL.Image 这个模块,其中的 image.crop() 方法,PIL 是一个自带模块。
def capture(self, what): #waht是webelement
begin = what.location
size = what.size
start_x = begin['x']
start_y = begin['y']
end_x = start_x + size['width']
end_y = start_y + size['height']
name = str(start_x)+'_'+str(start_y)+'_'+str(end_x)+'_'+str(end_y)
box = (start_x, start_y, end_x, end_y)
self.driver.get_screenshot_as_file(tmp + '/' + 'full_screen.png')
image = Image.open(tmp + '/' + 'full_screen.png') #tmp是临时文件夹
newimage = image.crop(box)
newimage.save(tmp + '/' + name + '.png')
os.popen('rm %s/full_screen.png' %tmp)
主要思路是先截取整个屏幕,这个 Appium 自带的 get_screenshot_as_file() 就可以实现,然后根据 element 的坐标在大图中截取 element 的部分。