安裝參考: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()