应用场景是这样的: 书写了单机版的 appium 并行控制几十部终端的程序,程序中伴随了一些原始的 adb 操作,现在手机的控制数目需要上好几个数量级,因此考虑进行分布式部署,本身 appium 是支持分布式的,无奈,原始的 adb 操作遇到执行机与手机宿主机的分离场景,想着是否有可以通过 appium server 支持 adb 命令,就不需要进行繁琐的更改了 目前没有找到方法,有具体实践或有过这方面经验的同仁不,多谢指导
试了下,感觉是处理的手机上的操作,看来是 appium 把整个通道封上了,不允许进行手机通道外的操作,比如 adb push 等的操作,真想好好看看 appium server 的源代码,可惜能力较弱,努力学习吧
def adb_shell(self, command, args, includeStderr=False): """ appium --relaxed-security appium需要以此方式启动才可使用shell adb_shell('ps',['|','grep','appium']) :param command:命令 :param args:参数 :param includeStderr: 为 True 则抛异常 :return: """ result = self.driver.execute_script('mobile: shell', { 'command': command, 'args': args, 'includeStderr': includeStderr, 'timeout': 5000 }) return result
谢谢,是否有更超前的,就是在获取 driver 前,比如,我可以直接通过这个获取手机的版本,然后这个时候才能进行 driver 的 desired apability 的设置,进而 driver 的创建 很感谢,已经基本满足了
建议自己封装 adb 命令,我之前就封装过一个,appium 只有在初始化了 driver 后才能操作手机
先剪裁了下,好在 adb 不多,尽量保持完整性,我感觉有能力还是完善下 appium 的功能
Appium 没有和手机建立,实在想获取数据的话就这样 节点机器 adb kill-server 然后执行 adb nodaemon server -a 启动 server 模式 主机使用 adb -H={IP} -P={port} devices 就能获取到其他局域网上的节点手机数据了
还有其实 adb 启动 server 模式后 Appium 也可以使用 remoteAdbHost 的参数连接远程节点上的手机,执行自动化任务,节点不需要搭建 Appium 环境。
请问 IOS 端有没有类似 adb 远程执行的方式?
我也是碰到这类问题,我认为最好的方式是二次开发 Appium server 的源代码,这样的方式是科学并且有效的,而且因为工作需要还需要实现镜像链接,订阅了此帖子,后面我会把我的一些研究成果分享出来!