博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Mac 搭建appium+android+VS编译器的app UI自动化(真机)
阅读量:3977 次
发布时间:2019-05-24

本文共 2929 字,大约阅读时间需要 9 分钟。

1、安装JDK

2、安装SDK、安装android studio
3、脚本编写

1、安装JDK

这里分享一个下载的链接,具体的网上又很多,请自行参照

2、安装SDK,安装android studio

为什么写在一起呢,因为你直接下一个android studio就行了,然后创建一个项目,他就会下载全部的依赖,就都会有了,点这个地方,你就会看到有你的sdk的地址,然后在终端配置环境变量

android studio的官网下载地址:
另外因为我sdk和android studio是分开下的,然后我遇到一个问题是:我只有一个tools文件,其他很多文件都没有,解决办法也是从官网去下载没有的目录,然后直接复制进目录里面
在这里插入图片描述

3、脚本编写:(我这里用的真机 oppoR9s 安卓版本:8.0.1)

4.1、OPPO打开开发者模式,打开usb调试,在终端输入adb devices

在这里插入图片描述
4.2、打开appium 配置JDK和SDK
在这里插入图片描述
在这里插入图片描述
4.3、点击start server,点击这个放大镜🔍
在这里插入图片描述
4.4、配置真机的信息到apium(四项必填)
{
“platformName”: “Android”,
“platformVersion”: “8.01”,
“udid”: “f011acdc”,这个就是adb出来的东西填这里
“deviceName”: “vivo”
}
在这里插入图片描述

到这里为止,你就可以通过appium来查看手机的元素,来选选看用什么来定位你的元素吧,接下来要讲到的就是怎么用代码调用:这里参考的是:

代码如下:
创建一个:desired_capabilities.py的文件

#!/usr/bin/python# -*- coding: UTF-8 -*-def get_desired_capabilities():    desired_caps = {        "platformName": "Android",        "platformVersion": "6.0.1",        "udid": "d1bbcae2",        "automationName": "Appium",        "deviceName": "OPPO",        #bundleid 如果没有填 app 地址,填了这个 id 就会直接运行已安装的 app        'bundleId': 'com.aihuishou.airent',        "unicodeKeyboard": True,        "resetKeyboard": True,        "autoGrantPermissions": True,        #超时时间        'newCommandTimeout': 60,        #是否不重新安装启动        "noReset": True    }    return desired_capsdef get_uri():    return 'http://localhost:4723/wd/hub'```创建一个:mian.py的文件

#!/usr/bin/python

-- coding: UTF-8 --
from appium import webdriver
import desired_capabilities
import time
from time import sleep
import unittest

class AndroidTest(unittest.TestCase):

@classmethoddef setUpClass(self):    desired_cap = desired_capabilities.get_desired_capabilities()    uri = desired_capabilities.get_uri()    self.driver = webdriver.Remote(uri,desired_cap)@classmethoddef tearDownClass(self):    self.driver.quit()    def wait_for_element(self,xpath=None, id=None, index=None, timeOut=20):    startTime = time.time()    nowTime = time.time()    while nowTime - startTime < timeOut:        try:            if xpath is not None:                el = self.driver.find_element_by_xpath(xpath)                return el        except:            pass        try:            if id is not None:                if index is not None:                    return self.driver.find_element_by_id(id)[index]                else:                    return self.driver.find_element_by_id(id)        except:            pass        sleep(1)        nowTime = time.time()    raise Exception("Element xpath[%s] id[%s] index[%s] is not found" % (xpath, id, index))def test_a_utFrame(self):    print(self.driver.current_activity)    self.wait_for_element(id="com.aihuishou.airent:id/iv_item").click()

if name==‘main’:

suite = unittest.TestSuite()
suite.addTest(AndroidTest(“test_a_utFrame”))
unittest.TextTestRunner(verbosity=2).run(suite)

> 在这里遇到的两个问题是:from appium import webdriver的时候报错的> 解决办法是:在终端执行:`pip install Appium-Python-Client`> > from selenium 也是报错的> 解决办法是:在终端执行:pip install Selenium

点击运行,此刻你的手机已经完全被代码控制了,开心~😂

转载地址:http://oirki.baihongyu.com/

你可能感兴趣的文章
VMware网络连接 桥接、NAt、host-only模式
查看>>
VMware网络设置详解 打造超级虚拟网络
查看>>
关于MYSQL Error:ERROR 1005 (HY000) at line 3: Can't create table '.\xx.frm'错误
查看>>
linux命令行获取机器的物理地址并打印及Linux获取系统信息的常用命令
查看>>
解决在CentOS 5.5 yum源下载慢的办法即修改yum源
查看>>
PHP中exec、system等函数调用linux命令问题
查看>>
httpd.conf文件配置详解
查看>>
php shell_exec()与反撇号等价输出结果
查看>>
chmod 命令,主要是+s的选项
查看>>
linux 里命令ls -l 后,文件类型权限后面的数字什么意思
查看>>
Vmware无法登陆Web Interface的解决
查看>>
软件版本常识和软件版本号命名规则
查看>>
shell判断文件是否存在
查看>>
解决FCKeditor在线文本编辑器自动过滤HTML标签的方法
查看>>
Centos 时间同步
查看>>
linux中用shell获取昨天、明天或多天前的日期
查看>>
crontab命令详解
查看>>
linux下的tar打包命令示例和详解
查看>>
一天一点学习Linux之文件系统的手动挂载
查看>>
linux下挂载U盘的方法
查看>>