开始学习appium+python,环境搭建通了,但是连接虚拟设备报错adb server is out of date.killing...

通过度娘,找到如下文章,解决。

前提:

1,搭建好环境

2,启动好android虚拟机,avd。设置永不待机。

3,驱动好appium

cmd下,输入appium

C:\Users\Administrator>appium

info: Welcome to Appium v1.4.16 (REV ae6877eff263066b26328d457bd285c0cc62430d)

info: Appium REST http interface listener started on 0.0.0.0:4723

info: Console LogLevel: debug

开始测试:

新建python工程,输入如下代码

import os
import time
from appium import webdriver

desired_caps ={
    'platformName':'Android',
    'platformVersion':'4.3.1',
    'deviceName':'Android Emulator',
    #'deviceName':'Android Emulator',
    'appPackage':'com.android.calculator2',
    'appActivity':'.Calculator'
}
print u'123'
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_caps)


可能分析:出错的原因是adb的端口被其他程序的进程占领了,所以要做的就是找到并kill该进程。


  1. 1,在cmd中执行adb nodaemon server,查看adb的端口号是多少,一般情况下是5037(why?应该软件使用的端口号是固定的),如下图

  2. 2

    再执行netstat -ano | findstr "5037" ,会看到如下类似的情形:

    这里稍微解释一下,显示的从左到右的意思分别是,连接类型(TCP)、本地地址和端口、外部地址和端口、连接状态、进程的PID号。这里有两个进程占据着5037端口,其中一个占据的是本地的5037端口,另外一个占据的是外部的5037端口,要干掉的当然就是那个本地的PID为240的端口啦!

  3. 3

    CTRL+ALT+DEL唤出任务管理器。点击进程,现在要找的是PID为240的进程。有时候可能会发现任务管理器里没有进程PID的信息显示,这时候只要点击任务管理器的查看-->选择列,如下图,然后把PID勾选上即可。这时候再次查看当前进程的PID,把PID为240的进程kill掉。然后再运行adb命令就顺顺利利啦!