Python Selenium 截图验证码图片

3
我想要截屏并只裁剪验证码图片,我写了这段代码:http://pastebin.com/Hqau6kRD
elem = driver.find_element_by_css_selector("#imagecpt")
loc  = elem.location
size = elem.size
left  = loc['x']
top   = loc['y']
width = size['width']
height = size['height']
box = (int(left), int(top), int(left+width), int(top+height))
screenshot = driver.get_screenshot_as_png()
img = Image.open(StringIO.StringIO(screenshot))
area = img.crop(box)
area.save('screenshot.png', 'PNG')

保存的图片完全是黑色的,我错在哪里了?

不太确定,但我认为这并没有按照你的期望运行:“StringIO.StringIO(screenshot)” - narko
Image是什么?它是通过pip安装的模块,还是随Python安装一起提供的?如果是随Python安装的,您使用的是哪个版本,从哪里获取的?我怀疑您的问题在于您的Image库可能无法处理png文件。 - ArtOfWarfare
2个回答

2

是的。对于Python3,它将会是这样的:

...
from io import BytesIO
...
screenshot = driver.get_screenshot_as_base64()
img = Image.open(BytesIO(base64.b64decode(screenshot))
...

1
我假设您正在使用PIL库中的Image模块。请尝试获取base64值,解码后将其作为参数传递给open()方法。
...
screenshot = driver.get_screenshot_as_base64()
img = Image.open(StringIO.StringIO(base64.b64decode(screenshot))
...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接