【Python成长之路】基于sikuli jar包,实现淘宝自动抢单功能(1)

【写在前面】

    记得节前,西哥问我能不能帮忙写个淘宝自动抢单的功能。其实之前就有提到过sikuli IDE工具,可以很方便地实现图形化自动化,只是当时并没有真正用python实现。

    因此刚好借这个机会,进一步熟悉python和sikuli框架之间的使用。

 

【效果如下 】

以下 操作全部由代码模拟用户鼠标操作进行的 。当前仅实现了自动打开浏览器并把商品加入 购物车,后续功能有待优化和 实现。

 

【示例代码】

# coding=utf-8
# @Auther : "鹏哥贼优秀"
# @Date : 2019/10/1
# @Software : PyCharm

from jpype import *
import jpype
import time

url = 'https://detail.ju.taobao.com/home.htm?spm=608.2291429.102212b.1.68864f84xeZhgw&id=10000503777283&item_id=539686923712'
jvmPath = jpype.get_default_jvm_path()
jpype.startJVM(jvmPath, '-ea', '-Djava.class.path=F:\\sikuli\\1\\sikulixapi.jar')
Screen = JClass('org.sikuli.script.Screen')
Key = JClass('org.sikuli.script.Key')
Pattern = JClass('org.sikuli.script.Pattern')
KeyModifier = JClass('org.sikuli.script.KeyModifier')
myscreen = Screen()
mykey = Key()
mykeymodifer = KeyModifier()
myscreen.capture(0, 0, 1366, 768)
myscreen.click(Pattern('最小化窗口.png').similar(0.6))
if not myscreen.exists('add.png',2):
    print("未检测到浏览器,将自动打开chrome浏览器!")
    myscreen.doubleClick('chrome.png')
myscreen.click(Pattern('add.png').similar(0.6))
myscreen.type(url)
myscreen.type(mykey.ENTER)
myscreen.type(mykey.ENTER)
myscreen.click(Pattern('最大化.png').similar(0.6))
myscreen.click(Pattern('马上抢.png').similar(0.6))
time.sleep(2)
for i in range(5):
    myscreen.click(Pattern('4.png').similar(0.6))
myscreen.click('taste.png')
myscreen.click(Pattern('shopping cart.png').similar(0.6))
shutdownJVM()

 

【知识点】

1、python 如何调用jar包

    之前抢红包的博客,主要是基于sikuli IDE,即自身的app软件界面实现的。但是在下载sikuli程序时,其实还下载了一个sikuliapi.jar包。

因此现在的问题就是如何用Python调用jar包了。很简单,可以使用jpype库或者jython库。本文是 以jpype为例(当前前提是本地电脑已经安装java,并成功配置java环境变量;如果不会配置java或者安装的同学,可 以自行百度)

(1)获取jvm路径信息;

(2)启动Jvm,即可调用到你想要的jar包。

 

2、sikuli jar包的功能使用

(1) screen:获取当前屏幕,之后 再进行具体按钮的操作;对应函数有用于确定屏幕范围的capture(x1,y1,x2,y2),也有手动确定检测屏幕范围的selectRegion();

(2) Pattern:用于图像匹配,支持相似度similiar(0.7)、偏移量设置targetOffset(10,30)。0.7表示相似度为70%,10表示向上移10个像素,30表示向右移30个像素;

(3) Key:用于键盘输入;

(4) KeyModifier:用于获取键盘控制对象,比如ctrl/alt/shift等,多用于 ctrl+A之类的组合

 

对应的屏幕操作:

(1) 单击:myscreen.click

(2) 双击:myscreen.doubleClick

(3) 输入:myscreen.type

(4) 对应enter输入:mykey.ENTER

(5) ctrl+a组合输入: myscreen('a',myKeyModifier.CTRL)

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值