selenium 截取二维码位置错误的问题

网上的截取二维码的代码很多,可以适用于大部分场景

但是有的页面带有滚动条,就需要特殊处理了。

操作如下:

  1. 滚动到二维码元素处
  2. 此时再截屏
  3. 获取二维码所在坐标
  4. 根据坐标和二维码元素的宽高进行截取。

 

上代码:

亲测,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:

有看到别人写的文章,一点点移动,这种方法是治标不治本的,并没有找到因为所以。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值