要先安裝Appium,並用它來查找對應元素的id、xpath等信息 from appium import webdriver from appium.webdriver.extensions.android.nativekey import AndroidKey from selenium.webd ...
要先安裝Appium,並用它來查找對應元素的id、xpath等信息
from appium import webdriver from appium.webdriver.extensions.android.nativekey import AndroidKey from selenium.webdriver.common.by import By import time # 註意要在程式運行前打開Appium,否則程式會報錯:ConnectionRefusedError: [WinError 10061] 由於目標電腦積極拒絕,無法連接。 DesireCaps = { 'platformName': 'Android', 'platformVersion': '11', # 手機安卓版本 'deviceName': 'MyLaptop', 'appPackage': 'tv.danmaku.bili', # appPackage名稱 # 查看應用包名: # 1、沒有apk # 在手機上進入自己要操作的頁面,然後在命令行視窗執行:adb shell dumpsys activity recents | find "intent={" # 就會產生:cmp=xxx/yyy……,xxx即為appPackage,yyy即為appActivity(只看第一行,下麵的可能為其他包名),一般是:intent={……cmp=xxx/yyy……} # 2、有apk # aapt.exe的路徑 dump badging 軟體apk的路徑 | find "package: name="(我這裡的aapt.exe的路徑為:D:\Appium\appium\androidsdk\build-tools\29.0.3\aapt.exe) # aapt.exe的路徑 dump badging 軟體apk的路徑 | find "launchable-activity" 'appActivity': '.MainActivityV2', # appActivity名稱(啟動界面) # 或者寫成appPackage.appActivity 'unicodeKeyboard': True, # 使用自帶輸入法,需要輸入除英文字元以外的字元 'resetKeyboard': True, # 執行完程式後恢複原來輸入法 'noReset': True, 'newCommandTimeout': 6000, 'automationName': 'UiAutomator2' } driver = webdriver.Remote('http://localhost:4723/wd/hub', DesireCaps) # 第一次運行的時候手機會自動安裝自動化代理 # 可根據id、ClassName、Accessibility、Xpath來定位元素 time.sleep(3) driver.find_element(By.XPATH, '//android.widget.TextView[@content-desc="搜索"]').click() # 註意要importBy time.sleep(3) driver.find_element(By.XPATH, '//android.widget.EditText[@content-desc="搜索查詢"]').send_keys("onepiece") # 後面不能直接加.press_keycode(AndroidKey.ENTER)。而是要另起一行 driver.press_keycode(AndroidKey.ENTER) # 輸入回車 time.sleep(3) TextView1s = driver.find_elements(By.XPATH, """/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.FrameLayout[1]/android.widget.FrameLayout/android.widget.LinearLayout/androidx.viewpager.widget.ViewPager/android.view.ViewGroup/android.widget.FrameLayout/androidx.recyclerview.widget.RecyclerView/android.view.ViewGroup/android.widget.TextView[1]""") TextView2s = driver.find_elements(By.XPATH, """/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.FrameLayout[1]/android.widget.FrameLayout/android.widget.LinearLayout/androidx.viewpager.widget.ViewPager/android.view.ViewGroup/android.widget.FrameLayout/androidx.recyclerview.widget.RecyclerView/android.view.ViewGroup/android.widget.TextView[2]""") TextView3s = driver.find_elements(By.XPATH, """/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.FrameLayout[1]/android.widget.FrameLayout/android.widget.LinearLayout/androidx.viewpager.widget.ViewPager/android.view.ViewGroup/android.widget.FrameLayout/androidx.recyclerview.widget.RecyclerView/android.view.ViewGroup/android.widget.TextView[3]""") TextView4s = driver.find_elements(By.XPATH, """/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.FrameLayout[1]/android.widget.FrameLayout/android.widget.LinearLayout/androidx.viewpager.widget.ViewPager/android.view.ViewGroup/android.widget.FrameLayout/androidx.recyclerview.widget.RecyclerView/android.view.ViewGroup/android.widget.TextView[4]""") TextView5s = driver.find_elements(By.XPATH, """/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.FrameLayout[1]/android.widget.FrameLayout/android.widget.LinearLayout/androidx.viewpager.widget.ViewPager/android.view.ViewGroup/android.widget.FrameLayout/androidx.recyclerview.widget.RecyclerView/android.view.ViewGroup/android.widget.TextView[5]""") for i in list(range(5)): print(TextView1s[i].text) print(TextView2s[i].text) print(TextView3s[i].text) print(TextView4s[i].text) print(TextView5s[i].text)