引言

本篇文章环境配置是又臭又长,想直接看代码的老铁,可以直接跳到后边

所需环境

python 这里我用的是3.6

appium 所需要的环境配置:
jdk1.8.0
android sdk

模拟器:mumu 模拟器

环境配置

模拟器

mumu 模拟器下载地址
查看模拟器安卓版本
打开设置一直往下滑看到 关于平板电脑 点进去就可以看到Android 版本了

Appium

Appium 安装地址

jdk 安装地址
jdk 环境配置教程

Android SDK 下载

这里我用的是一个国内的 Android 工具的下载网站,因为官方的下载慢。。


建议下载24.4.1 里的工具,window 版本的小伙伴建议下载我圈起来的那个

Android SDK 环境配置

1,安装好SDK 之后 ,打开目录

2,这张图我是当初安装的时候上网找到的,作者是谁我忘记了,推荐参考这个来安装
注:Android sdk 版本是向下兼容的,你可以只安装一个比你安卓版本高一个版本的就可以了,当然你也可以从9一直安装到你模拟器的版本,再低的就不要安装了

3,下载好sdk 版本之后就到了 ,配置环境变量,新建一个ANDROID_HOME,值写你的安装地址

4,在环境变量里找到 Path
新建
%ANDROID_HOME%\platform-tools
%ANDROID_HOME%\tools
%ANDROID_HOME%\build-tools\28.0.0

5,打开Appium,把我们的jdk和sdk目录填上去就可以了

6,开启Appium 服务,进入到版面之后点击这个长得像搜索框的搜索框

7,配置连接模拟器的参数,具体的参数
注: 这里我是根据mumu 模拟器来的,如果有老铁用的是其它的模拟器的话,就只能自己去百度了
{
“platformName”: “Android”,
“deviceName”: “127.0.0.1:7555”,
“platformVersion”: “6.0.1”,
“appPackage”: “com.ss.android.ugc.aweme”,
“appActivity”: “com.ss.android.ugc.aweme.splash.SplashActivity”,
“noReset”: true,
“unicodekeyboard”: true,
“resetkeyboard”: true
}
字段解析
platformName:操作系统
deviceName:当前设备端口号。使用的哪个模拟器,7555是mumu模拟器,7555端口号是在安装目录emulator\nemu\vms\myandrovm_vbox86\myandrovm_vbox86.nemu里配置的

appPackage:app包名
appActivity:app活动类名

保存后,点击启动会话,到这里环境配置就算是完工了

利用Appium 获取抖音按键demo

打开我们的模拟器,安装好抖音

启动我们的 Appium 会话,我们就会进到这个选取demo页面

1,当我们点击他的父节点会发现页面全选了

2,这时候就得一个个点进他的子节点,一个个找我们需要的按键demo,比如:搜索框。
/*
如何获取有用的信息?
*/
resource-id 这个是我们需要的东西,用来定位到 demo位置的 结果id
如何判断按键demo是否可以点击,clickable 为 true,意味着这个demo可以点击
如果clickable 为 false ,我这里的想法是写到 try 方法里边模拟鼠标强制点击,或者使用swipe来实现点击
重要的是: resource-id 会在抖音每一次更新过后会发生改变

demo拿到了,我们开始撸代码

代码实现自动化点击

业务目标

  • 进入抖音,点击搜索框,输入美女搜索,点击用户demo,出现用户列表之后,点击进入到用户详情页之后返回点击下一个用户。

1,第一步先开启服务让appium连接到模拟器,进入到sdk目录下边的 platform-tools 。进入cmd,输入

adb connect 127.0.0.1:7555
adb devices



然后开启我们的 Appium 启动服务

2,代码连接模拟器

from appium import webdriveroption= {}
option['platformName'] = 'Android'
option['platformVersion'] = '6.0.1'  # 对应模拟器版本
option['deviceName'] = '127.0.0.1:7555'
# app信息,aapt可以查
option['appPackage'] = 'com.ss.android.ugc.aweme'
option['appActivity'] = '.splash.SplashActivity'
# 键盘配置,不用键盘可以不配,用完需要手动恢复下手机键盘,appium不会自动恢复
option['unicodeKeyboard'] = 'true'  # 使用Unicode键盘
option['resetKeyboard'] = 'true'  # 重置当前输入法
# APP是否重新设置,没有这个每次都会重新设置
option["noReset"] = "true"# 连接设备  4723是Appium的端口号
driver = webdriver.Remote("http://localhost:4723/wd/hub", option)

3,自动点击进入用户列表界面

#得到窗口大小
def get_size():x=driver.get_window_size()['width']y=driver.get_window_size()['height']return x, ydef click_info():driver.implicitly_wait(10)# 点击搜索driver.find_element_by_android_uiautomator('new UiSelector().resourceId("com.ss.android.ugc.aweme:id/ctd")').click()time.sleep(3)driver.implicitly_wait(10)     # 因为**模拟器很卡,所以睡久点# 点击搜索,输入内容shuru = driver.find_element_by_android_uiautomator('new UiSelector().resourceId("com.ss.android.ugc.aweme:id/aia")')shuru.send_keys(u'美女')shuru = driver.find_element_by_id('com.ss.android.ugc.aweme:id/kqe').click()# driver.swipe(shuru)#  因为这里的搜索按钮clickable 为false ,强制点击try:ActionChains(driver).click(shuru).perform() # 点击确认位置-搜索键except:passtime.sleep(3)driver.implicitly_wait(10)# 点击用户框user = driver.find_elements_by_id('android:id/text1')[2]user.click()time.sleep(3)

4,

  • 进入用户列表界面之后我们再用Appium 查看抖音键位demo之后 发现 用户列表的 clickable事件为 false ,思路我上边也写了,我这里用的是swipe点击;
  • 在观察发现,他们的 resource-id 都长得一样,意味着我们上边的那种利用resource-id 定位的方法没用了,这里我换一个思路,仔细观察发现,最下边有个 bounds 里边有他们的坐标,这样意味着我们可以利用坐标来获取点击,nice!



5,坐标获取

# 屏幕向上滑动
def swipe(time = 1000):# 窗口大小size = get_size()# time = 1000 ms  = 1秒# 获取到第一个用户列表的坐标 [0,209][810,334]x1 = int(size[0] * 0)x2 = int(size[0] * 1)y1 = int(size[1] - 1231)y2 = int(size[1] - 1106)# 点击time.sleep(1)driver.swipe(x1, y1, x2, y2,time)time.sleep(3)# 点击返回driver.find_element_by_android_uiautomator('new UiSelector().resourceId("com.ss.android.ugc.aweme:id/l6")').click()time.sleep(3)# 屏幕上滑 第二个坐标 [0,351][810,528]a1 = int(size(0) * 0)a2 = int(size[0] * 1)b1 = y1 + 142b2 = y2 + 194time.sleep(1)driver.swipe(x1, y1, x2, y2,time)time.sleep(3)
time.sleep(5)for i in range(1,1000):swipe()print(i)

总结

如果坐标点击出问题的话,可以多试试几个坐标。
完整代码就是上边的一个个模块拼接起来,如果有什么不懂的,欢迎留言
如果对你有帮助不妨一键三连,不客气

参考文章:0到1的教程

python+appium 实现抖音自动化点击滑动相关推荐

  1. python+appium 实现抖音自动化浏览

    所需环境 python 这里我用的是3.8 appium 所需要的环境配置: jdk1.8.0 android sdk 模拟器:夜神模拟器 环境配置 这里就不详说环境了 请参考http://t.csd ...

  2. appium驱动抖音搜索 + 点击关注

    from appium import webdriver import pymongo #WebDriverWait用来加入时间判断,有时候控件元素需要过一段时间才会出现 from selenium. ...

  3. 用 Python 全自动下载抖音小姐姐视频

    (给Python开发者加星标,提升Python技能) 作者:法纳斯特(本文来自作者投稿,简介见末尾) 为什么写这篇文章,主要也是因为看了一篇文章. 「用Python在抖音扒了这些高颜值女神后,突然成了 ...

  4. 用 Python 全自动下载抖音小姐姐视频(附源码)

    作者:法纳斯特 为什么写这篇文章,主要也是因为看了一篇文章. 「用Python在抖音扒了这些高颜值女神后,突然成了人生赢家」,文中简述了一名工程师利用Python+ADB+鹅厂的AI,一晚上关注了一千 ...

  5. 【app测试】实战1:(华为真机)抖音自动化浏览

    [app测试]实战1:抖音自动化浏览 adb连接华为真机 设置appium 实战代码 adb连接华为真机 打开华为手机开发者模式:设置->关于手机->版本号(连点7次,进入开发者模式)-& ...

  6. python模拟登录抖音_利用 mitmproxy 实现抖音 Cookie,设备 ID 获取 (一)

    先讲解一下思路,是利用mitmproxy代理https协议,从而判定抖音个人信息接口,在个人信息接口的返回体接收时将用户信息数据,以及Header头(主要是Cookie),Query体(包含设备ID) ...

  7. python爬取抖音用户数据_使用python爬取抖音视频列表信息

    如果看到特别感兴趣的抖音vlogger的视频,想全部dump下来,如何操作呢?下面介绍介绍如何使用python导出特定用户所有视频信息 抓包分析 Chrome Deveploer Tools Chro ...

  8. python爬取抖音APP视频教程

    本文讲述爬取抖音APP视频数据(本文未完,后面还有很多地方优化总结) 公众号回复:抖音 即可获取源码 1.APP抓包教程,需要用到fiddler fiddler配置和使用查看>>王者荣耀盒 ...

  9. python一键去抖音视频水印工具,请勿用于学习以外的用途!

    一.前言 翻了翻爬虫代码存货,决定把抖音APP视频批量下载的代码拿出来做个文章. 二.实战背景 抖音越来越火,越刷越上瘾,总感觉下一个视频一定会更精彩,根本停不下来.想将抖音里喜欢的小哥哥/×××姐的 ...

最新文章

  1. MSI-X 之有别于MSI
  2. 分布式服务Dubbo+Zookeeper安全认证
  3. 在SAP C4C里触发SAP ERP的ATP check和Credit check
  4. 发现大量Java原语集合处理
  5. vue2.5.2版本 :MAC设置应用在127.0.0.1:80端口访问; 并将127.0.0.1指向www.yours.com ;问题“ Invalid Host header”
  6. 又一个绝对棒的对话框插件fancybox v1.3.4
  7. 【C语言笔记初级篇】第一章:C语言快速入门及注意事项
  8. 二叉树的建立与遍历(数据结构)
  9. 黑科技绝对不能错过!随机采样方法MCMC
  10. 火眼报告称2019年新出现500个新型恶意软件
  11. numpy 常用api(三)
  12. python中str如何使用_python中str函数的使用方法
  13. (转)互联网投顾平台的监管风险:和讯信息
  14. GoComb.com搜索引擎问世:改进搜索体验
  15. 如何使用中国知网检索论文-科研小白篇
  16. 高阶常微分方程的求解
  17. 【学习】利用结构化思维学习
  18. 设计数据密集型应用 第五章:复制
  19. 怦然心栋-冲刺日志(第10天)
  20. google源码下载方法

热门文章

  1. 学生个人网页制作html(附源码)
  2. SQL中 decode()函数
  3. ICLR 2020 Spotlight!从梯度信噪比来理解深度学习泛化性能 | AI TIME PhD
  4. 什么是模板引擎?常见的模板引擎有哪些?Thymeleaf的常用指令介绍。
  5. Linux iostat命令解析
  6. 【Unity插件--Obi Rope】制作含有物理效果的3D柔性绳子
  7. Qt中的默认文件夹路径获取方法
  8. 计算机考研各科时间安排,计算机考研书目、心得、时间安排等.doc
  9. 担心隐私泄露?Dline打造可信社交
  10. matlab学习——摄氏度与华氏度的转换