当前位置: 首页 > news >正文

Python自动化抖音自动刷视频

环境准备

  • Python3.5以上
  • Appium Server服务器
  • Android SDK,需要用到adb服务
  • 需要依赖Appium-Python-Client组件库
  • 真机或者模拟器,推荐模拟器(真机一般安卓8版本以上了,appium对安卓8以上版本元素获取的兼容性不太好)
  • JDK8环境

实现

确保adb服务和appium服务及真机/模拟器正常打开,然后在真机/模拟器上将抖音打开。

确定需要的参数

参数基本上都是固定的,只需要确定抖音的包名和活动页即可。

adb shell dumpsys window | findstr mCurrentFocus获取到抖音的包名数据,最后代码里的参数:

desired_caps = {"platformName": "Android",	# 平台是安卓的"deviceName": "127.0.0.1:62001",  # 通过 adb devices命令获取"appPackage": "com.ss.android.ugc.aweme",	# 抖音包名"appActivity": ".splash.SplashActivity",	# 活动页"platformVersion":"7.1" # 7.1.2
}

参数整完记得项目跑起来测试一下。

控制模拟器进入抖音后

我们需要去获取页面上的元素或坐标,来实现滑动视频等其他操作。

到我们的Android SDK的tools目录下使用uiautomatoviewer.bat取页面快照。

操作的过程其实相对简单,就是实现页面滑动即可;可能会遇到弹框、点击授权之类的,处理一下即可。然后还需要注意的就是元素的加载时间问题,尽量考虑好网络、设备等其他因素,将等待时间放长些。

# @creator by wlh
# @date 2023/3/15 19:43
import timefrom appium import webdriver
from appium.webdriver.common.touch_action import TouchAction
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as ecdesired_caps = {"platformName": "Android","deviceName": "127.0.0.1:62001",  # 通过 adb devices命令获取"appPackage": "com.ss.android.ugc.aweme","appActivity": ".splash.SplashActivity","platformVersion": "7.1"  # 7.1.2
}driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", desired_capabilities=desired_caps)driver.implicitly_wait(20)	# 等待弹框元素
driver.find_element(By.XPATH, "//*[@text='同意']").click()
driver.implicitly_wait(20)	# 等待弹框元素
driver.find_element(By.XPATH, "//*[@text='允许']").click()time.sleep(1.5)
size = driver.get_window_size()
width, height = size['width'], size['height']	# 获取屏幕宽高action = TouchAction(driver)
for i in range(5):# 实现滑动action.press(x=width / 2, y=height / 3 * 2).wait(500).move_to(x=width / 2, y=height / 3).release()action.perform()try:# 3s后 弹框元素不出现,直接跳过继续执行WebDriverWait(driver, 3).until(ec.presence_of_element_located((By.XPATH, "//*[@text='允许']")))driver.find_element(By.XPATH, "//*[@text='允许']").click()except:passtime.sleep(5)
driver.close_app()
driver.quit()
http://www.lryc.cn/news/41096.html

相关文章:

  • 使用vite创建vue3工程
  • 嵌入式学习笔记——STM32的时钟树
  • Python学习(2)-NumPy矩阵与通用函数
  • 剑指 Offer II 035. 最小时间差
  • Spark SQL函数定义【博学谷学习记录】
  • 模拟实现STL容器之vector
  • ChatGPT-4.0 : 未来已来,你来不来
  • Java反射(详细学习笔记)
  • 学习 Python 之 Pygame 开发魂斗罗(十二)
  • Linux下字符设备驱动开发以及流程介绍
  • Web自动化框架断言方法实现
  • 8大核心语句,带你深入python
  • 【批处理】- 批处理自动安装Mysql与Redis
  • 聊聊华为的工作模式
  • 燕山大学-面向对象程序设计实验-实验6 派生与继承:多重派生-实验报告
  • 分割两个字符串得到回文串[抽象--去除具体个性取共性需求]
  • 【LeetCode】1609. 奇偶树、1122. 数组的相对排序
  • 【C++初阶】4. Date类的实现
  • ES6新特性--变量声明
  • 【Django】缓存机制
  • 我的创作纪念日——一年的时间可以改变很多
  • Jetson Nano驱动机器人的左右两路电机
  • 如何通过openssl生成公钥和私钥?
  • Verilog的If语句和Case语句
  • HJ31 单词倒排
  • leetcode——203.移除链表元素
  • GPT-4来袭:开启人工智能新时代
  • 芯微电子IPO终止:业绩开始大幅下滑,王日新、王苟新兄弟不同命
  • 【C++】用手搓的红黑树手搓set和map
  • 【C++】空指针弃NULL用nullptr