搭建linux下面的appium环境

刚换一份工作的时候,需要用到python语言,所以这时候python最好干什么来实践一下,又不是很难,所以想到了游戏任务脚本,为了模拟按键、滑动这些基本的操作就想到了使用appium模块和环境来实现这个功能。下面就是部署环境的过程,查了一下解决方法,记录一下自己的问题过程。

1、涉及使用到的工具、Python、AS、然后就是这个appium安装中用到的node-js、npm、还安装了cnpm,后来未使用到。

 

2、使用到这个模块主要是为了调用对应的driver模块代码,实现连接对应的设备,来实现对设备的操作。

  2.1 第一个就是部署server环境。下面这个就是部署的原因,使用webdriver.Remote首先要有对应的服务端,就是http://127.0.0.1:4723/wd/hub

desc = {}
        desc['deviceName'] = 'a391caaf'
        #desc['deviceName'] = 'MQS0219701005445'
        desc['platformVersion'] = '12'
        desc['platformName'] = 'Android'
        #desc['appPackage'] = 'com.huawei.android.launcher'
        #desc['appActivity'] = 'com.huawei.android.launcher/.unihome.UniHomeLauncher'
        desc['appPackage'] = 'com.zte.mifavor.launcher'
        desc['appActivity'] = 'com.android.launcher3.uioverrides.QuickstepLauncher'
        self.driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desc)

  2.2  安装node-js ,版本一般看后面的安装中,版本要大于10版本

    sudo apt-get install node.js

    对应版本可能无法使用,后面npm介绍升级方式

  2.3 安装npm。版本一般要大于3版本

    sudo apt-get install npm

    sudo npm install -g -n 安装node的版本管理工具,用来更细node的版本

    sudo n table/v 7.0.0/latest 安装稳定/7.0.0版本/最新版本

  2.4 安装cnpm,有时候原始镜像路径下载比较慢,所以需要使用国内淘宝镜像,所以安装cnpm。但是我没使用到

    sudo npm install -g cnpm

  2.5 安装appium

    sudo npm install -g appium 

  2.6 npm卸载

    sudo npm uninstall appium -g / cnpm -g

3、安装中一个是权限问题,一个是版本问题,看错误信息就可以分析出来,这里不在列举

 

4、启动界面和网络访问表示正确部署环境

  终端下运行appium,正常出现下面的版本信息

[Appium] Welcome to Appium v1.22.2
[Appium] Appium REST http interface listener started on 0.0.0.0:4723

  或者网页访问出现下面的json信息。网址就是上面的http://127.0.0.1:4723/wd/hub

  

{"status":9,"value":{"error":"unknown command","message":"The requested resource could not be found, or a request was received using an HTTP method that is not supported by the mapped resource","stacktrace":""}}

 

5、启动之前的环境配置

export ANDROID_HOME=/home/liulei/Android/Sdk
export PATH=$PATH:$ANDROID_HOME/tools
export PATH=$PATH:$ANDROID_HOME/tools/bin
export PATH=$PATH:$ANDROID_HOME/platform-tools

  vi ~/.zshrc source ~/.zshrc之后,要记得重启appium服务才能生效

6、adb的问题,这样配置之后,调用连接机器的时候要对应设备的系统、系统版本、设备ID,应用界面等信息,使用的adb是platform-tools下面的adb,可能会出现问题,我这边处理方式是将系统的adb软连接到tools目录下面,这样就可以使用了。另一种

是配置一下系统adb的,这个暂没尝试

 

7、之后就是Python部分要下载对应的包进行程序开发,第一份辅助脚本就可以开发了。使用额外的对应的包名是opencv-python 、Appium-Python-Client和selenium模块

  

    def getSize(self):
        x = self.driver.get_window_size()['width']
        y = self.driver.get_window_size()['height']
        return (x,y)

    def swipup(self,t):
        print("UPUP")
        screensize = self.getSize()
        x1 = int(screensize[0]*0.5)
        y1 = int(screensize[1]*0.75)
        y2 = int(screensize[1]*0.25)
        self.driver.swipe(x1,y1,x1,y2,t)

    def swipdown(self,t):
        print("DOWNDOWN")
        screensize = self.getSize()
        x1 = int(screensize[0]*0.5)
        y1 = int(screensize[1]*0.25)
        y2 = int(screensize[1]*0.75)
        self.driver.swipe(x1,y1,x1,y2,t)

    def swipleft(self,t):
        print("LEFTLEFT")
        screensize = self.getSize()
        x1 = int(screensize[0]*0.75)
        y1 = int(screensize[1]*0.5)
        x2 = int(screensize[1]*0.25)
        self.driver.swipe(x1,y1,x2,y1,t)

    def swipright(self,t):
        print("RIGHTRIGHT")
        screensize = self.getSize()
        x1 = int(screensize[0]*0.25)
        y1 = int(screensize[1]*0.5)
        x2 = int(screensize[1]*0.75)
        self.driver.swipe(x1,y1,x2,y1,t)

 

8、appium比传统的坐标方式更好了,不受分辨率的限制了,也有很多对应的集成函数来使用,更加方便手机模拟的功能

  具体可以查看API文档https://www.kancloud.cn/testerhome/appium_docs_cn/2001600

 

posted @ 2021-12-31 16:01  Sukkimy  阅读(447)  评论(0)    收藏  举报