网上的截取二维码的代码很多,可以适用于大部分场景
但是有的页面带有滚动条,就需要特殊处理了。
操作如下:
- 滚动到二维码元素处
- 此时再截屏
- 获取二维码所在坐标
- 根据坐标和二维码元素的宽高进行截取。
上代码:
亲测,windows,Mac各宽度屏幕均可。
def get_code_image(driver, fiel_name, ele_name='token-img', is_by_id=True):
if is_by_id is True:
code_element = driver.find_element_by_id(ele_name)
else:
code_element = driver.find_element_by_css_selector(ele_name)
code_element.location_once_scrolled_into_view # 这是重点
driver.save_screenshot(fiel_name)
left = code_element.location_once_scrolled_into_view['x']
top = code_element.location_once_scrolled_into_view['y']
right = code_element.size['width'] + left
height = code_element.size['height'] + top
im = Image.open(fiel_name)
img = im.crop((left, top, right, height)) # 截取验证码图片保存
save_res = img.save(fiel_name)
return save_res
code_element.location_once_scrolled_into_view 主要是这个方法!!!
tips:
有看到别人写的文章,一点点移动,这种方法是治标不治本的,并没有找到因为所以。