1. 程式人生 > >python3 appium1.7.2 安裝uiautomator2解決android7 無法定位的問題

python3 appium1.7.2 安裝uiautomator2解決android7 無法定位的問題

為什麼用2

因為手機是android 7 在原生介面找不到元素 driver,page_source 一直處於狀態, 我也不想這麼玩,搭建appium已經煞費苦心,沒法 繼續試試

首先   npm install appium-uiautomator2-driver 目前裝的是最新版2.37 但是發現與android 的chrome不匹配 然後就下載了 2.36的

chromedriver 版本對應關係 url

https://sites.google.com/a/chromium.org/chromedriver/downloads

然後再次執行 果然又報錯 那就繼續找原因

然後他溫馨的告訴俺 appium-uiautomator2-server-v0.3.0.apk   這個龜兒子 有毛病 可能水土不服或者得了版本偏高偏低症,反正就是不行

然後我就去了他的路徑 去給他治治

C:\Users\CY\AppData\Roaming\npm\node_modules\appium\node_modules\appium-uiautomator2-driver\uiautomator2

 你猜怎麼著,這個龜兒子 壓根不存在 我XXXXXXX!!!!!!!!!!```````````````````````````

怎麼裝呢???? 百度唄

url https://github.com/appium/appium-uiautomator2-server/releases?after=v0.4.1 下載對應的版本 (應該有牆 真特麼慢 等了估計2分鐘)

然後我抱著試試看的想法再次運行了一下

你猜怎麼著

還是不行!!!


selenium.common.exceptions.WebDriverException: Message: An unknown server-side error occurred while processing the command. Original error: Error executing adbExec. Original error: 'Command 'C\:\\android-sdk\\platform-tools\\adb.exe -P 5037 -s a6a6a8b39904 install -r C\:\\Users\\CY\\AppData\\Roaming\\npm\\node_modules\\appium\\node_modules\\appium-uiautomator2-driver\\uiautomator2\\appium-uiautomator2-server-v0.3.0.apk' exited with code 1'; Stderr: 'adb: failed to install C:\Users\CY\AppData\Roaming\npm\node_modules\appium\node_modules\appium-uiautomator2-driver\uiautomator2\appium-uiautomator2-server-v0.3.0.apk: Failure [INSTALL_FAILED_USER_RESTRICTED: Install canceled by user]'; Code: '1'

如何檢視埠是否被佔用呢

netstat -ano | findstr 5037

原來埠被佔用了   kill掉adb
再次執行

然後android裝了幾個app

又報錯了

原來是這個又沒裝 有點窩火 就不能一次提醒完整嘛

下面的倆 都要下載


抱著有點火夫人態度,猛地點了一下run

哈哈哈哈

又報錯了


這個問題難為了我一天,沒有找到解決方案,

然後就重啟了手機 就好了,就特麼好了  氣不氣  太特麼氣了

然後再次run 成功了

綜上所吹的牛逼 就是兩點

1、chromedriver 與手機的版本是不是對應的

2、那個apk 是不是對應的 ,沒有就去下載

測試程式碼

class AndroidLogin(unittest.TestCase):
    def setUp(self):
        conf = ConfigParser()
        self.file_path = file_path('1')
        conf.read(setting_path())
        self.username = conf.get('teamLeader', 'Zhenglinlin')
        self.password = conf.get('operation', 'password')
        self.username1 = conf.get('management', 'yangyinghua')
        device_name = get_android_udid()
        stop_android_appium()
        sleep(2)
        start_android_appium(device_name)
        desired_caps = {
            'platformName': 'Android',
'deviceName': device_name,
'platformVersion': get_android_version(),
'appPackage': conf.get('android', 'appPackage'),
'appActivity': conf.get('android', 'appActivity'),
'recreateChromeDriverSessions': True,
'automationName':  'Uiautomator2'
}
        self.driver = android_driver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
        sleep(3)
        # handle_permissions_popovers(self.driver)
def test_01_android_login(self):
        android_login(self.driver, self.username, self.password)

    def tearDown(self):
        self.driver.close()