安装参考:http://www.python3.vip/tut/auto/appium/01/
其他:https://www.cnblogs.com/king2/p/13683218.html
# 安装client编程库
pip install appium-python-client
# 安装Appium Server
Appium-windows-1.15.1.exe
# 安装JDK
jdk-8u211-windows-x64.exe
添加一个环境变量 JAVA_HOME,指定值为jdk安装目录,例如:JAVA_HOME d:\tools\java\jdk1.8.0_211
# 安装 Android SDK
androidsdk.zip
需要 配置一下 添加一个 环境变量 ANDROID_HOME ,设置值为sdk包解压目录,比如 d:\tools\androidsdk
另外,还推荐大家配置环境变量 PATH ,加入 adb所在目录, d:\tools\androidsdk\platform-tools\
# 打开即将要处理的APP,在命令行输入以下代码,获取APP的appPackage、appActivity
adb shell dumpsys activity recents | find "intent={"
import time
from appium import webdriver
desired_caps = {
'platformName': 'Android', # 被测手机是安卓
'platformVersion': '7', # 手机安卓版本
'deviceName': 'xxx', # 设备名,安卓手机可以随意填写
'appPackage': 'com.ss.android.ugc.aweme.lite', # 启动APP Package名称 com.jingdong.app.mall com.ss.android.ugc.aweme.lite
'appActivity': 'com.ss.android.ugc.aweme.main.MainActivity', # 启动Activity名称 .main.MainActivity com.ss.android.ugc.aweme.main.MainActivity
'unicodeKeyboard': True, # 使用自带输入法,输入中文时填True
'resetKeyboard': True, # 执行完程序恢复原来输入法
'noReset': True, # 不要重置App
'newCommandTimeout': 6000,
'automationName' : 'UiAutomator2'
# 'app': r'd:\apk\bili.apk',
}
# 连接Appium Server,初始化自动化环境
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
# 设置缺省等待时间
driver.implicitly_wait(3)
# 如果有`青少年保护`界面,点击`我知道了`
# iknow = driver.find_elements_by_id("text3")
# if iknow:
# iknow.click()
# 根据id定位来赚钱,点击
print("点击下面的赚钱图标")
# driver.find_element_by_id("b2s").click() # 或者id是b2x 已成功
driver.tap([(437,1761)]) # 通过坐标点击下面的赚钱图标,这个启动快
time.sleep(1)
str = '/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout[2]/android.widget.RelativeLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.webkit.WebView/android.webkit.WebView/android.view.View/android.view.View/android.view.View[2]/android.view.View[2]/android.view.View/android.view.View[3]'
# 限时任务赚金币是否已领取
received = driver.find_element_by_xpath(str).text
print("限时任务赚金币是否去领取:",received)
# 找文本:限时任务赚金币
# driver.tap([(981,68),(1025,112)],500) # 限时任务赚金币关闭宝箱广告,右上角只有一个× c3c3e036-ef80-4ed3-ba0c-275d12dde83b
# gold_time = driver.find_element_by_android_uiautomator('new UiSelector().text("限时任务赚金币")')
if received == "去领取":
print("准备去领取限时任务金币")
driver.find_element_by_android_uiautomator('new UiSelector().text("限时任务赚金币")').click()
time.sleep(1)
for _ in range(10):
time.sleep(5)
try:
close_gold_time = driver.find_element_by_android_uiautomator('new UiSelector().text("关闭广告")')
print("close_gold_time:",close_gold_time)
if close_gold_time:
close_gold_time.click()
break
except:
pass
time.sleep(2)
# 找文本:开宝箱得金币xpath方法
open_box_xpath = '/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout[2]/android.widget.RelativeLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.webkit.WebView/android.webkit.WebView/android.view.View/android.view.View/android.view.View[3]/android.widget.Image'
open_box_text = driver.find_element_by_xpath(open_box_xpath).text
# 找文本:开宝箱得金币text方法
open_box = driver.find_element_by_android_uiautomator('new UiSelector().text("开宝箱得金币")')
print("点击:%s:"%open_box_text)
# driver.tap([(817,63)],500) # 开宝箱关闭广告
if open_box:
open_box.click()
print("开宝箱得金币已点击")
time.sleep(0.5)
# 会弹出看广告视频再赚306金币的窗口
open_adv_xpath = '/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout[2]/android.widget.RelativeLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.webkit.WebView/android.webkit.WebView/android.view.View/android.view.View[2]/android.view.View[2]/android.view.View/android.view.View/android.view.View/android.view.View[3]/android.view.View[1]'
open_adv = driver.find_element_by_xpath(open_adv_xpath)
open_adv_text = open_adv.text # 看广告视频再赚
time.sleep(0.5)
print("点击:%s"%open_adv_text)
open_adv_text = open_adv.click()
for _ in range(10):
time.sleep(5)
try:
close_box = driver.find_element_by_android_uiautomator('new UiSelector().text("关闭广告")')
print("close_box:",close_box)
if close_box:
print("关闭开宝箱得金币广告的×")
close_box.click()
break
except:
pass
# driver.back()
input('**** Press to quit..')
driver.quit()