• appium远程连手机调控


    背景:最近写了一篇博客是用 adb 远程连接手机(真机),联想到appium底层也是用的adb命令,那么可不可以将appium的代码通过远程调试手机,

              而不用usb线调试呢?下面是我实验的过程。

    1、先将appium的代码通过usb线连接形式,先调试一遍(为了让手机上安装一些必要的appium的apk,以及一些权限的开启)

    import time
    
    from appium import webdriver
    
    # server 启动参数
    desired_caps = {}
    # 设备信息
    desired_caps['platformName'] = 'Android'
    desired_caps['platformVersion'] = '10'
    desired_caps['deviceName'] = '192.168.56.101:5555'
    # app的信息
    desired_caps['appPackage'] = 'com.android.settings'
    desired_caps['appActivity'] = '.Settings'
    # 解决输入中文
    desired_caps['unicodeKeyboard'] = True
    desired_caps['resetKeyboard'] = True
    desired_caps['noReset'] = True  # 保留软件数据,否则每次一开始都要有一些权限问题,会报错的
    # 声明我们的driver对象
    driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)

    2、查看appium的运行日志:

    根据上图appium运行日志可以发现,有三个很重要的参数:5037、5555、以及手机ip地址。
    在之前通过adb远程连接手机时,介绍过这几个端口的意义,直接上图:
    这里再介绍一下:5037和5555端口作用
    5037是adb client开启的端口,用来发送adb命令
    adb server监听的就是5037端口,5555端口是用来与设备(pc)进行连接通信的。
    所以,appium的远程通信,实质上就是adb的远程通信。
    所以要想实现appium远程连接手机调控步骤:(前提,脚本先用usb进行有线连接跑一遍脚本,进行一些前置的准备:必要apk下载,权限问题)
    1、开启appium server(将python代码转化为adb命令)  
                appium让一个脚本去跑到多台手机。
                    appium -p 4723 -bp 4724 -U 192.168.57.101:5555    
                    appium -p 4725 -bp 4726 -U 192.168.57.102:5555
       
    2、adb 设置为远程连接手机的形式
     
    3、运行脚本,结果成功,可以通过远程连接的形式将appium脚本跑到手机上了。
     
    踩坑:当我以客户端的形式启动appium时,是可以打开手机设置页面的,
    但是当我以命令行形式启动server时,却打不开,并保错(查看appium日志看到报错信息:Error: Appium Settings app is not running after 5000ms),
    解决方法:
    该问题并不常见,主要是手机操作系统的问题
        程序无法无法自动打开appium  settings,那么我们可以手动打开appiumsettings服务(程序没有界面,会出现打开就闪退的错觉,这是正常现象)
        然后再运行脚本。(我的原因是手机无法自动打开Appium Settings,通过手动打开即可正常运行)
    如果觉得此方法麻烦,那就只能更新系统或者更换手机解决了。
    教训:要学会看日志报错信息
     
  • 相关阅读:
    用VC编译lua源码,生成lua语言的解释器和编译器
    vs如何在C++中调用Lua
    打印页面 订单号生成 条形码
    关于 打印页面 图片被截断
    easyui numberbox输入框 编辑不可编辑的切换
    点击空白处--某个div 消失
    easyui扩展行默认展开 以及 去除滚动条
    eayui grid 每一页的行号都是从1开始
    js中的this--执行上下文
    easyui grid 本地做分页
  • 原文地址:https://www.cnblogs.com/st998/p/13868183.html
Copyright © 2020-2023  润新知