Python+Appium自动刷喵糖
1、引言
小屌丝:鱼哥,今年双十一,瓜分现金的任务做了没。
小鱼:必须的,羊毛不薅,手痒痒!
小屌丝:那你是手动薅的?
小鱼:胡扯,
小屌丝:果然如我所料
小鱼:你又知道了?
小屌丝:来吧,不要再让我每天手动点点点,太耗时了~
小鱼:好吧~
今天我们通过python+appium来自动完成手淘的喵糖任务。
如果不了解 Appium的话,可以先阅读小鱼的这两篇系列博文:
2、Appium 安装及配置
2.1 安装
使用appium的第一步,就是安装。
下载地址:http://appium.io/
下载完Appium,就直接安装就好,这里不多说,
安装完,就可以运行了
2.2 Appium启动
appium启动方式有多种,这里说常用的两种方式:
- cmd窗口启动
- python脚本启动
详细启动内容,参照小鱼这篇:
启动appium服务的2种方法(python脚本&cmd窗口)
2.2.1 cmd窗口启动
这里直接cmd窗口,输入命令,启动appium
C:\Users\carl.DJ>appium
[Appium] Welcome to Appium v1.17.1
[Appium] Appium REST http interface listener started on 0.0.0.0:4723
我们这里以启动一个appium为例
同时启动多个,参照:启动appium服务的2种方法(python脚本&cmd窗口)博文
Appium启动界面
2.2.2 Python 脚本启动
代码展示
# -*- coding: utf-8 -*-
# @ auth : carl_DJ
# @ time : 2021-11-02
import subprocess
import time
def appium_start(host,port):
'''
启动appium server
:param host:
:param port:
:return:
'''
#指定bp端口号
bootstrap_port = str(port+1)
#把在cmd弹窗输入的命令,直接写到这里
# cmd = 'start /b appium -a ' + host+' -p '+str(port) +' -bp '+ str(bootstrap_port)
#去掉 “/b”,即可以打开cmd弹窗运行
cmd = 'start appium -a ' + host+' -p '+str(port) +' -bp '+ str(bootstrap_port)
# 打印输入的cmd命令,及时间
print("%s at %s " %(cmd,time.ctime()))
subprocess.Popen(cmd,shell=True,stdout=open('./appium_log/'+str(port)+'.log','a'),stderr=subprocess.STDOUT)
if __name__ == '__main__':
host = '127.0.0.1'
#运行一个端口
port = 4723
appium_start(host,port)
#运行2个端口
同样可以正常启动。
这里就不在放截图了
2.3 Appium的使用
Appium启动后,我们就需要进行配置
首先,打开配置界面
其次我们需要配置启动app的Desired Capabilities参数,如下:
- platformName(手机系统)
- deviceName(设备名称)
- apppackage(app程序包名)
- appActivity(入口Activity名)
敲黑板:
deviceName:如果是手机模拟器,则填126.0.0.1:端口号
第三点击start session,启动APP
3、代码实战
我们启动Appium后,就可以编写代码,进行薅羊毛了。
# -*- coding: utf-8 -*-
# @ auth : carl_DJ
# @ time : 2021-11-02
'''
引入 appium模块并设置好参数,启动app
'''
#设置appium的参数
desired_casp = {
"platformName": "Android",
"deviceName": "input DeviceName",
"appPackage": "com.taobao.taobao",
"appActivity": "com.taobao.tao.welcome.Welcome",
"noReset": "true", #避免重新登录
"fullReset": "false"
}
#服务url设置为本地
server_url = 'http://localhost:4723/wd/hub'
#启动
driver = webdriver.Remote(server_url,desired_casp)
#设置循环点击
while true:
#定位喵糖,并进行点击
driver.find_element_by_android_uiautomator('new UiSelector().text("去浏览")').click()
time.sleep(random.randint(15,17))
driver.press_keycode(4)
小屌丝:唉我去~~