• seckill


    京东自动登录

    注:本文所做操作皆以京东web为例

    包含:xpath,splinter,ocr

    遇到的坑:

    1. 登录页面通过查看网页元素,能看到账户,密码唯一id,但是执行

      1
      2
      browser.fill("loginname", name)  # 填写账户密码
      browser.fill("nloginpwd", passwd)

      报错信息

      1
      selenium.common.exceptions.InvalidElementStateException: Message: invalid element state: Element is not currently interactable and may not be manipulated

      实际原因如下

      1
      元素你看得到,但是代码要操作的元素是跟随鼠标变更样式的,或者其他条件实时变更的,导致代码不能“看见”。这种情况就需要通过js操作dom元素来适应场景。

      经过分析,查看网页源代码可以看到,实际被js代码渲染,可能更改,所以一定要保持页面如真是用户操作一样,方可。所以添加如下代码,解决问题

      1
      2
      3
      大专栏  seckill="code">
      browser.click_link_by_text("账户登录")#使login,passwd可见
      browser.fill("loginname", name)
      browser.fill("nloginpwd", passwd)

      2.京东验证吗

      注:京东验证码阻塞了俩天,通过搜索知道京东验证码由三部分组成;

      1
      acid,uid,yys三部分拼装而成,acid,uid为固定值,可以从页面直接抓取,yys为随机生成的13为字符串,拼装而成的验证码例如url=https://authcode.jd.com/verify/image?a=1&acid=b6ff1eca-e3e5-4692-904b-be35da5f0752&uid=b6ff1eca-e3e5-4692-904b-be35da5f0752&yys=5436761901589

      过程1. requests 请求url获取一直ok,通过requests返回值result, 查看result.text发现返回的为京东首页的html网页内容,显然有误,查看返回302代码,重定向。定位问题,应该是访问url,ok.requests headers 有误。然后添加了cookie,返回200

      过程2. 返回200,查看返回数据,发现一堆乱码,以为是编码问题,打印result.encoding,返回None,应该不是编码问题。经搜索,返回如果是图片,应该是二进制数据,所以乱码。尝试保存数据到硬盘,发现验证码图片保存成功。

      过程3. 调用百度ocr接口,实现验证码识别,准确度不高,有待提高

    代码地址:

    1
    https://github.com/wanderingpuppy/seckill
  • 相关阅读:
    写在我第一个虚幻程序之前
    C++学习笔记(十二):重载函数
    JavaScript兼容问题汇总[实时更新]
    Activity跳转时传递Bitmap对象的实现
    Http报头Accept与Content-Type的差别
    第0讲: 准备篇
    Android Design Support Library(二)用NavigationView实现抽屉菜单界面
    Android Design Support Library(一)用TabLayout实现类似网易选项卡动态滑动效果
    Android Support Library 23.2用法简析
    Android Design Support Library初探,NavigationView实践
  • 原文地址:https://www.cnblogs.com/lijianming180/p/12370762.html
一二三 - 开发者的网上家园