Python+appium操作Android手机实现自动化

安装参考: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()

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值