前一篇文章Python+Appium+夜神模擬器安裝與簡單運行(1/2)介紹了環境配置與啟動App,本篇就就介紹下如何控制bilibili搜索’日本核廢水‘的相關視頻,
使用Appium控制App涉及到一個無法繞開的問題,就是查找到要操作的元素,查找元素有兩個方法:
-
使用安裝Android SDK時安裝的uiautomatoviewer程式,它由uiautomatoviewer.bat啟動(如果啟動時報錯,請參考運行uiautomatorviewer.bat報錯No suitable Java found),
-
使用Appium Inspector,
這兩種方法的具體操作步驟可查閱相關資料,這里就不再展開敘述,
下面我就直接給出最終的test_appium_nox.py程式:
from appium import webdriver
from appium.webdriver.extensions.android.nativekey import AndroidKey
from time import sleep
desired_caps = {
'platformName': 'Android', # 被測手機是安卓
'platformVersion': '7.1.2', # 手機安卓版本
'deviceName': '127.0.0.1:62001', # 設備名,安卓手機可以隨意填寫
'appPackage': 'tv.danmaku.bili', # 啟動APP Package名稱
'appActivity': '.ui.splash.SplashActivity', # 啟動Activity名稱
'unicodeKeyboard': True, # 使用自帶輸入法,輸入中文時填True
'resetKeyboard': True, # 執行完程式恢復原來輸入法
'noReset': True, # 不要重置App, 保存之前的資料(例如賬號密碼什么的)
'newCommandTimeout': 6000,
}
# 連接Appium Server,初始化自動化環境
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
print('App啟動成功')
# 等待15秒,以使App啟動完成
driver.implicitly_wait(15)
# 如果有'用戶隱私協議', 點擊'同意', 如果找不到的話會報例外, 所以需要放在try execpt中
try:
# sleep(10)
i_am_agree = driver.find_element_by_id('agree')
if i_am_agree:
i_am_agree.click()
except Exception as one:
print('no agree')
# 如果有'青少年保護'界面,點擊'我知道了', 如果找不到的話會報例外, 所以需要放在try execpt中
try:
# sleep()
iknow = driver.find_element_by_id("text3")
if iknow:
iknow.click()
except:
print("no text3")
# 根據id定位搜索位置框,點擊, 如果找不到的話會報例外, 所以需要放在try execpt中
try:
expand_search = driver.find_element_by_id("tv.danmaku.bili:id/expand_search")
if expand_search:
expand_search.click()
except:
print('no expand search')
# 根據id定位搜索輸入框,點擊, 如果找不到的話會報例外, 所以需要放在try execpt中
try:
sbox = driver.find_element_by_id('tv.danmaku.bili:id/search_src_text')
if sbox:
sbox.send_keys('日本核廢水')
driver.press_keycode(AndroidKey.ENTER) # 輸入回車鍵,確定搜索
except:
print('no search src text')
input('**** Press to quit..')
driver.quit()
最終模擬器中的運行效果如下:

轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/278114.html
標籤:其他
上一篇:android使用SQLite
