python3 appium1.7.2 安装uiautomator2解决android7 无法定位的问题

时间:2024-04-14 09:51:28

为什么用2

因为手机是android 7 在原生界面找不到元素 driver,page_source 一直处于状态, 我也不想这么玩,搭建appium已经煞费苦心,没法 继续试试

python3 appium1.7.2 安装uiautomator2解决android7 无法定位的问题

首先   npm install appium-uiautomator2-driver 目前装的是最新版2.37 但是发现与android 的chrome不匹配 然后就下载了 2.36的

chromedriver 版本对应关系 url

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

然后再次运行 果然又报错 那就继续找原因


python3 appium1.7.2 安装uiautomator2解决android7 无法定位的问题

然后他温馨的告诉俺 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分钟)

然后我抱着试试看的想法再次运行了一下

你猜怎么着

还是不行!!!

python3 appium1.7.2 安装uiautomator2解决android7 无法定位的问题

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

又报错了

python3 appium1.7.2 安装uiautomator2解决android7 无法定位的问题

原来是这个又没装 有点窝火 就不能一次提醒完整嘛

下面的俩 都要下载

python3 appium1.7.2 安装uiautomator2解决android7 无法定位的问题

抱着有点火夫人态度,猛地点了一下run

哈哈哈哈

又报错了

python3 appium1.7.2 安装uiautomator2解决android7 无法定位的问题

这个问题难为了我一天,没有找到解决方案,

然后就重启了手机 就好了,就特么好了  气不气  太特么气了

然后再次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()