Mac 搭建appium+android+VS编译器的app UI自动化(真机)

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

1、安装JDK

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

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_caps

def 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):

@classmethod
def setUpClass(self):
    desired_cap = desired_capabilities.get_desired_capabilities()

    uri = desired_capabilities.get_uri()

    self.driver = webdriver.Remote(uri,desired_cap)


@classmethod
def 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

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值