Appium [已解决] Appium + android + 多设备, 提示 error: more than one device and emulator

二三三三三三三 · 2016年02月29日 · 最后由 hoyiner 回复于 2019年11月14日 · 2750 次阅读

我的环境:
一台真机, 一台模拟器 同时连在电脑上

我的 APPIUM 启动参数:

appium --address 127.0.0.1 --port 4723 --bootstrap-port 4724 -U 192.168.56.101:5555 --session-override --automation-name Appium




问题 1: 服务启动以后, 我去跑脚本, 怎么是这样的提示?需要在另一个 terminal 里再次执行脚本才能开始
*问题 1 已经解决, 愚蠢的我在尝试多设备的时候 代码里加了 os.system('appium') *





问题 2: 运行一段时间后, 会提示下面的错误, 然后就再也无法定位元素了。
解决办法: 在脚本里直接调用 adb 命令时, 同样需要在后面带上参数 -s 指定设备的 udid
解决办法: 在脚本里直接调用 adb 命令时, 同样需要在后面带上参数 -s 指定设备的 udid
解决办法: 在脚本里直接调用 adb 命令时, 同样需要在后面带上参数 -s 指定设备的 udid

重要的事说 3 遍

error: more than one device and emulator

*我的脚本初始化内容: *

desired_caps={}
        desired_caps['device'] = 'android'
        desired_caps['platformName']='Android'
        desired_caps['browserName']=''
        desired_caps['version']='4.4.2'
        desired_caps['deviceName']='192.168.56.101:5555'   #   这里注释掉就报错。 看来是必填
        desired_caps['udid']='192.168.56.101:5555'        # 尝试过注释这里, 没有用
        desired_caps['app'] = PATH('/Users/liuyu/Downloads/some.apk')
        desired_caps['unicodeKeyboard'] = True
        desired_caps['resetKeyboard'] = True
        self.driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_caps)

共收到 27 条回复 时间 点赞

你脚本怎么写的?

#1 楼 @lihuazhang

def setUp(self):
        desired_caps={}
        desired_caps['device'] = 'android'
        desired_caps['platformName']='Android'
        desired_caps['browserName']=''
        desired_caps['version']='4.4.2'
        desired_caps['deviceName']='192.168.56.101:5555'
        desired_caps['udid']='192.168.56.101:5555'
        #desired_caps['app'] = None
        if MACOS:
            desired_caps['app'] = PATH('/Users/liuyu/Downloads/some.apk')
        else:
            desired_caps['app'] = PATH('D:\\download\\some.apk')
        desired_caps['unicodeKeyboard'] = True
        desired_caps['resetKeyboard'] = True
        self.driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_caps)

其余的就是正常的脚本了, 没有再单独启动什么服务。

desired_caps['deviceName']='192.168.56.101:5555'
       desired_caps['udid']='192.168.56.101:5555'

去掉试试看

#3 楼 @lihuazhang

desired_caps['deviceName']='192.168.56.101:5555'    #  是必填 不让去掉
desired_caps['udid']='192.168.56.101:5555'   #  这一行去掉还是同样的问题

客户端脚本是不会启动服务器,除非你主动调用了启动服务器的代码。很奇怪。

#5 楼 @lihuazhang 那个, 很尴尬的说, 我脚本里真的写了

os.system('appium')

昨晚查代码的时候发现了。。 放在一个函数里了 =。=

话说第二个问题,也就是 adb 报多设备的问题有想法吗

#6 楼 @lylyliuyu 。。。第二个不知道,指定了设备,也不应该出现这个问题。

你是否有自己在某个地方调用了 adb 的命令?

#8 楼 @zsx10110 似乎有恍然大悟的感觉,我的确有调用! 那里我也应该指定设备吧?!

多设备连接时,输入命令 adb shell 命令不带-s deviceId 参数和这个提示一样一样的,猜测是因为类似的原因

#10 楼 @niuniudd
#8 楼 @zsx10110

感谢二位, 问题已经解决。。 大恩大德无以为报,唯有以身相许😘

有用有用,又绕过一个坑。楼上三位,祝你们 P 的愉快。

#11 楼 @lylyliuyu 我的脚本里没指定机器名也是可以实现并行的。。。

#13 楼 @neyo 应该不行吧, 不指定 UDID 的时候, appium 默认取 adb devices 里第一个设备,这样很容易就乱了。 除非你起服务的时候指定的 UDID

#14 楼 @lylyliuyu 我是命令行制定-p -bp,脚本指定 udid,就实现了

#14 楼 @lylyliuyu devicename 一直使用 android emulator 的。。这属性应该没啥用啊

#14 楼 @lylyliuyu 你是远程跑的吗?不过我是本机跑的。。

#16 楼 @neyo 我是本机, devicename 的确没有用, 但是需要填。。
你开始说 脚本里没有指定机器名, 我以为就是说的 UDID。

#18 楼 @lylyliuyu 😄我表述的不好

#19 楼 @neyo 我理解的不好😄

。。。这种低级粗心错误,求不要秀。。。

#21 楼 @lihuazhang 不是秀, 解决了问题 很开心而已。 😄

这个问题怎么解决啊,大神们

同样的问题解决了,确实是有地方调了 adb 命令 没有加 -s

求问是怎么解决的,我也是连了 2 台设备的时候,启动配置报 adb 错误:more than one device,跪求解决!

你们都是在哪里调用过 adb 指令啊?我啥都没调用怎么也报这个错

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册