京东自动登录
注:本文所做操作皆以京东web为例
包含:xpath,splinter,ocr
遇到的坑:
-
登录页面通过查看网页元素,能看到账户,密码唯一id,但是执行
1
2browser.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 |
seckill的更多相关文章
- seckill(1)秒杀系统主要步骤
-
SSM框架学习之高并发秒杀业务--笔记5-- 并发优化
前几节终于实现了这个高并发秒杀业务,现在问题是如何优化这个业务使其能扛住一定程度的并发量. 一. 优化分析 对于整个业务来说,首先是分析哪些地方会出现高并发,以及哪些地方会影响到了业务的性能.可能会出 ...
-
mysql新建表示,时间字段timetamp碰到的问题
在mysql中创建表时,在新加的字段时间上,碰到下面的问题: 建表语句如下: CREATE TABLE seckill( seckill_id bigint NOT NULL AUTO_INCREME ...
-
用Maven新建Web项目时报错
在cmd下,用mvn命令 mvn archetype:create -DgroupId=org.seckill -DartifactId=seckill -DarchetypeArtifactId=m ...
-
基于redis分布式锁实现“秒杀”
转载:http://blog.5ibc.net/p/28883.html 最近在项目中遇到了类似“秒杀”的业务场景,在本篇博客中,我将用一个非常简单的demo,阐述实现所谓“秒杀”的基本思路. 业务场 ...
-
android创建桌面快捷方式(启动目标非项目的启动页)
1.布局文件中,目标Activity加入以下filter <intent-filter> <action android:name="an ...
-
慕课网Java高并发秒杀学习
课程地址:http://www.imooc.com/learn/587 一个很好:spring,springMVC,mybatis,bootstrap,jQuery,mysql,Restful学习案例 ...
-
MyBatis dao层 方法传参
MyBatis dao层 方法传参有三种方法. 1. 以下标的方法获取参数. <update id="insertSuccessKilled"> INSER ...
-
MyBatis中的resultType和resultMap
MyBatis的查询在进行映射的时候,返回值类型可以使用resultType同时也可以使用resultMap.前者表示直接的返回值类型,一般是domain名称,当然这里可以写domain的全部路径也可 ...
随机推荐
-
nginx 目录文件列表功能配置
工作中常常有写不能有网页下载东西的需求,在Apache下搭建完成后直接导入文件即可达到下载/显示文件的效果,而Nginx也可以满足这样的需求(nginx 目录列表功能默认是关闭的),这时就需要配置. ...
-
Java并发编程实战(使用synchronized实现同步方法)
本文介绍java最基本的同步方式,即使用synchronized关键字来控制一个方法的并发访问,如果一个对象已用synchronized关键字声明,那么只有一个执行线程允许去访问它,其它试图访问这个对 ...
-
hdu1455 dfs+剪枝
Sticks Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Subm ...
-
高性能MySQL第1章知识点梳理
1. MySQL的逻辑架构 最上面不是MySQL特有的,所有基于网络的C/S的网络应用程序都应该包括连接处理.认证.安全管理等. 中间层是MySQL的核心,包括查询解析.分析.优化和缓存等.同时它还提 ...
-
动态时间归整/规整/弯曲(Dynamic time warping,DTW)
动态时间规整DTW 在日常的生活中我们最经常使用的距离毫无疑问应该是欧式距离,但是对于一些特殊情况,欧氏距离存在着其很明显的缺陷,比如说时间序列,举个比较简单的例子,序列A:1,1,1,10,2, ...
-
解放双手——Android自动化测试
解放程序猿宝贵的右手(或者是左手) http://blog.csdn.net/eclipsexys/article/details/45622813 --Android自动化测试技巧 Google大神 ...
-
**对比$_POST、$GLOBALS[&#39;HTTP_RAW_POST_DATA&#39;]和file_get_contents(&#39;php://input&#39;)
最近在开发微信接口,又学到了一些新的技术点,今天就把学到的关于接收数据的技术点给简单的罗列下. public function __construct($token, $wxuser = ''){ $ ...
-
gen-cpp/.deps/ChildService.Plo: No such file or directory
最近在编译 Thrift 的时候出现这种情况,我按照官方教程的要求,所有版本都是最新,但是还出现这种问题. ]: Entering directory `/home/yantze/dl/thrift/ ...
-
Ultra-QuickSort(归并排序)
Ultra-QuickSort Time Limit: 7000MS Memory Limit: 65536K Total Submissions: 49267 Accepted: 18035 ...
-
android 之 java环境部署
上甲骨文公司官网下载最新的jdk http://www.oracle.com/technetwork/cn/java/javase/downloads/jdk8-downloads-2133151-z ...