Python全系列 教程
3567个小节阅读:5931.9k
鸿蒙应用开发
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
备注
代码不同环境,运行结果不同,可能出现报错,大家了解思路即可
滑动屏幕方法:
xxxxxxxxxx
# 获取屏幕的宽、高
width = driver.get_window_size()['width']
height = driver.get_window_size()['height']
# 滑动屏幕
start_x = end_x = int(width*0.5)
start_y = int(height*0.75)
end_y = int(height*0.5)
driver.swipe(start_x, start_y, end_x, end_y)
xxxxxxxxxx
from time import sleep
from appium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
# 初始化的设备参数
desc = {
"platformName": "Android",
"platformVersion": "7.1.2",
"deviceName": "SM-G955N",
"appPackage": "cn.kuwo.player",
"appActivity": "cn.kuwo.player.activities.MainActivity"
}
# 设置appium的服务地址
server = 'http://localhost:4723/wd/hub'
# 创建一个模拟器
driver = webdriver.Remote(server,desc)
# 创建一个全局等待对象
wait = WebDriverWait(driver,15)
# 操作元素,获取数据
try:
# 获取协议
xy_id = 'cn.kuwo.player:id/tv_ok'
wait.until(EC.presence_of_element_located((By.ID,xy_id)))
xy_button = driver.find_element(By.ID,xy_id)
xy_button.click()
except Exception as e:
print('没有加载:获取协议 页面')
try:
# 获取权限
qx_id = 'cn.kuwo.player:id/tv_ok'
wait.until(EC.presence_of_element_located((By.ID,qx_id)))
qx_button = driver.find_element(By.ID,qx_id)
qx_button.click()
except Exception as e:
print('没有加载:获取权限 页面')
try:
# 访问文件权限
f_id = 'com.android.packageinstaller:id/permission_allow_button'
wait.until(EC.presence_of_element_located((By.ID,f_id)))
f_button = driver.find_element(By.ID,f_id)
f_button.click()
except Exception as e:
print('没有加载:访问文件权限 页面')
try:
# 获取登录页面
login_id = 'cn.kuwo.player:id/iv_close'
wait.until(EC.presence_of_element_located((By.ID,login_id)))
login_button = driver.find_element(By.ID,login_id)
login_button.click()
except Exception as e:
print('没有加载:登录页面')
try:
# 获取广告
guang_gao_id = 'cn.kuwo.player:id/iv_business_personal_dia_close'
wait.until(EC.presence_of_element_located((By.ID,guang_gao_id)))
g_button = driver.find_element(By.ID,guang_gao_id)
g_button.click()
except Exception as e:
print('没有加载:广告页面')
# 获取排行榜按钮
ph_xpath ='/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.RelativeLayout/android.widget.RelativeLayout/androidx.viewpager.widget.ViewPager/android.widget.RelativeLayout/androidx.viewpager.widget.ViewPager/android.widget.FrameLayout/android.widget.FrameLayout[1]/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.ListView/androidx.recyclerview.widget.RecyclerView/android.widget.RelativeLayout[2]/android.widget.ImageView'
wait.until(EC.presence_of_element_located((By.XPATH,ph_xpath)))
ph_button = driver.find_element(By.XPATH,ph_xpath)
ph_button.click()
# 获取歌单列表
list_xpath ='/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.RelativeLayout/android.widget.FrameLayout[1]/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout[4]/android.widget.ListView/android.widget.RelativeLayout[4]/android.widget.ImageView'
wait.until(EC.presence_of_element_located((By.XPATH,list_xpath)))
list_button = driver.find_element(By.XPATH,list_xpath)
list_button.click()
# 获取音乐
# m_xpath = '/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.RelativeLayout/android.widget.FrameLayout[1]/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout/android.widget.LinearLayout/androidx.viewpager.widget.ViewPager/android.widget.RelativeLayout/android.widget.LinearLayout/androidx.recyclerview.widget.RecyclerView/android.widget.LinearLayout[1]/android.widget.RelativeLayout/android.widget.RelativeLayout[2]/android.widget.LinearLayout[1]/android.widget.TextView'
# m = driver.find_element(By.XPATH,m_xpath).text
# print(m)
# 获取屏幕的宽、高
width = driver.get_window_size()['width']
height = driver.get_window_size()['height']
start_x = end_x = int(width*0.5)
start_y = int(height*0.75)
end_y = int(height*0.5)
flag = False # 默认还有数据
# 建立一个存放音乐的列表
all_music = []
while not flag:
# 获取多个音乐
n_xpath = '/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.RelativeLayout/android.widget.FrameLayout[1]/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout/android.widget.LinearLayout/androidx.viewpager.widget.ViewPager/android.widget.RelativeLayout/android.widget.LinearLayout/androidx.recyclerview.widget.RecyclerView/android.widget.LinearLayout/android.widget.RelativeLayout/android.widget.RelativeLayout[2]/android.widget.LinearLayout[1]/android.widget.TextView'
many_m =[ele.text for ele in driver.find_elements(By.XPATH,n_xpath)]
for m in many_m:
# 判断捕捉的数据是否已存在
if m not in all_music:
all_music.append(m)
print(f'增加了音乐:{m}')
sleep(5)
# 拖拽屏幕
driver.swipe(start_x,start_y,end_x,end_y)
sleep(1)
try:
# 获取是否还有数据的标识
end_xpath = '/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.RelativeLayout/android.widget.FrameLayout[1]/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout/android.widget.LinearLayout/androidx.viewpager.widget.ViewPager/android.widget.RelativeLayout/android.widget.LinearLayout/androidx.recyclerview.widget.RecyclerView/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.TextView'
flag = driver.find_element(By.XPATH,end_xpath)
except Exception as e:
flag = False
n_xpath = '/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.RelativeLayout/android.widget.FrameLayout[1]/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout/android.widget.LinearLayout/androidx.viewpager.widget.ViewPager/android.widget.RelativeLayout/android.widget.LinearLayout/androidx.recyclerview.widget.RecyclerView/android.widget.LinearLayout/android.widget.RelativeLayout/android.widget.RelativeLayout[2]/android.widget.LinearLayout[1]/android.widget.TextView'
many_m =[ele.text for ele in driver.find_elements(By.XPATH,n_xpath)]
for m in many_m:
# 判断捕捉的数据是否已存在
if m not in all_music:
all_music.append(m)
print(all_music)