mac搭建appium环境 ios真机

设备和主要的软件版本如下:

iphone xs 12.3.1;mac os 10.14.5;xcode 10.2.1;appium-desk 1.13.0;appium 无界面版 1.14.0; node.js 10.16.0;python3.7;JDK12.0.2 。

如果有报错权限问题的话,每条命令前加上sudo即可

环境搭建--jdk安装 :https://blog.csdn.net/weixin_42285509/article/details/91975321

检查jdk是否安装成功:输入 java -version  查看java的版本。如果输出版本信息,说明jdk安装成功。

brew

安装homebrew:homebrew 简称brew。

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" 

node.js 

使用brew命令安装

brew install node

安装完成后在终端输入 node -v 出现版本号字样说明安装成功。

依赖插件ibimobiledevice、carthage、ios-deploy、xcpretty

brew install libimobiledevice --HEAD
brew install carthage
npm install -g ios-deploy
gem install xcpretty

Xcode

推荐在App Store中下载安装

Appium

appium是手机和pc之间的代理服务器,完成两者的通信处理。(没错,它就是个中间商)
appium-desk版本可在官网下载安装http://appium.io/downloads.html
appium-server 无界面版使用npm命令安装,但鉴于部分资源被墙,建议使用淘宝镜像。

npm install -g cnpm --registry=https://registry.npm.taobao.org
cnpm install -g appium #[email protected]可指定安装版本

安装appium-doctor检查appium环境。

cnmp install -g appium-doctor

终端运行appium-doctor --ios

mac搭建appium环境 ios真机_第1张图片

如果报错提示xcode未安装在终端运行命令,设置xcode路径。

 xcode-select –switch /Applications/Xcode.app/Contents/Developer

WebDriverAgent (wda)

之前查阅了很多资料,说的是appium自带的wda有问题,无法使用inspector进行页面元素定位,但我决定使用appium-desk进行定位就没有单独去下载GIthub上的wda-master。

  • 首先是桌面版的wda
  1. 文件路径:
    /Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent
    在终端cd到上述目录,运行命令安装依赖。
./Scripts/bootstrap.sh

安装完成后点击mac右上角的聚焦搜索,粘贴路径敲击回车。

  1. 右键通过Xcode打开.xcodeproj文件。

    如果没有找到.xcodeproj文件

  2. clone项目(要安装有git brew install git):$ git clone https://github.com/facebook/WebDriverAgent

  3. 下载依赖

    $ cd /Users/yourname/WebDriverAgent

    $ mkdir -p Resources/WebDriverAgent.bundle

    $ sh ./Scripts/bootstrap.sh

  4. 首先打开Xcode-performance-account登录你的AppleID (我用的公司开发者账户,如果你是个人账户你就百度解决证书的问题)
  5. 在wdaLib General设置中选择自动签名,选择你的公司team。bundleid 是APP的唯一标识符,直接问开发获得。

     

    mac搭建appium环境 ios真机_第2张图片

     

    确认 wdaLib build setting 中deployment系统的版本

     

    mac搭建appium环境 ios真机_第3张图片

    image.png


    packaging 中的project bundleid 和之前填写的是否一致。

    mac搭建appium环境 ios真机_第4张图片

    image.png

     

    signing签名是否正确

     

    mac搭建appium环境 ios真机_第5张图片

    image.png

  6. 在wdaRunner General中设置自动签名,如果报错提示 Try again ,不要着急,先设置build setting。

     

    mac搭建appium环境 ios真机_第6张图片

    image.png

     

    检查build setting中packaging 的bundleid是否正确

     

    mac搭建appium环境 ios真机_第7张图片

    image.png


    设置签名

    mac搭建appium环境 ios真机_第8张图片

    image.png

  7. 连接上你的水果机,Scheme选择wdarunner,destination选择你的真机。

     

    mac搭建appium环境 ios真机_第9张图片

    image.png

     

    mac搭建appium环境 ios真机_第10张图片

    image.png

  8. 点击左上角三角形进行构建,首次构建可能会要求你输入访问钥匙的密码,输入你的账户密码即可(我输入的是开机密码),提示build succeeded。然后点击-product-test进行将wda安装到真机。安装完成后在真机的safari浏览器输入 127.0.0.1:8100/status 显示如下则表示安装成功。

     

    mac搭建appium环境 ios真机_第11张图片

    QQ20190725-0.PNG

  9. 点击右上角的放大镜按钮,弹出连接窗口,填入对应参数,

mac搭建appium环境 ios真机_第12张图片

 

  1. 参数填写完成后点击右下角start session 手机上点击信任此电脑,并且开启设置-开发者-enable ui automation ,转跳到爱的魔力转圈圈界面,第一次连接的时间可能会很长。

     

    mac搭建appium环境 ios真机_第13张图片

    路径/usr/local/lib/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent

同上,cd到目录执行命令后使用xcode构建。

 

./Scripts/bootstrap.sh

如果之前安装过appium-desk的wda ,xcode会卸载后重新安装,安装过程中如果提示application install failed 就手动卸载真机上的wda。

敲黑板
安装谁的wda就用谁去连接真机。
比如说:我通过xcode构建了appium-desk版的wda到真机上,那么我就只能通过desk版去连接真机,不能通过无界面appium+python连接!

Python

mac 系统自带python2,可通过官网下载并安装python3,在终端输入python3进入python IDE说明安装成功。

pip

pip 是 Python 包管理工具,该工具提供了对Python 包的查找、下载、安装、卸载的功能,目前如果你在 python.org 下载最新版本的安装包,则是已经自带了该工具。
你可以通过以下命令来判断是否已安装:

pip3 --version

安装成功提示如下

如果提示c'ommand not found可以通过如下命令安装

sudo easy_install pip

appium-python-client

appium-python-client 是让 python 连接 appium 服务的一个驱动,也就是一个 python 语言封装和 appium api 通讯的一个库。
安装方法:

pip install Appium-Python-Client

验证:

mac搭建appium环境 ios真机_第14张图片

引入webdriver模块不报错。

测试脚本

至此我们的ios测试环境已经部署的差不多了,接下来就用脚本进行测试吧。

  • 通过xcode给真机构建wda
  • 启动appium服务(有无界面版均可)
  • 编写脚本,通过入口参数连接至appium
  • 执行脚本

 

# coding=utf-8

from appium import webdriver
import time

class Appium:
    # 启动app
    def __init__(self):
        desired_caps = {}
        desired_caps['platformName'] = 'iOS'  # 设备系统
        desired_caps['platformVersion'] = '12.3.1'  # 设备系统版本
        desired_caps['deviceName'] = '欢哥的 iPhone'  # 设备名称
        desired_caps['bundleId'] = 'com.xxx.xxx'  # 测试app包名
        desired_caps['udid'] = 'xxxxxx-xxxxxxxx' #设备id
        desired_caps['automationName'] = 'XCUITest'  # 测试框架 
        desired_caps['noReset']='true' # 保留app的登录状态
        desired_caps['xcodeSigningId']='iOS Developer'
        desired_caps['xcodeOrgId']='aaaaa' # 团队id
        desired_caps['newCommandTimeout']=3600
        self.driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)  # 保持端口号和appium服务端口一致
        # 使用隐式等待或者显示等待,尽量减少time.sleep强制等待的使用提高脚本执行速度。
        self.driver.implicitly_wait(5)

    def test(self):
        # 点击一个id定位的元素
        self.driver.find_element_by_accessibility_id("").click()
        # 此处使用time.sleep是为了能让肉眼区分操作。
        time.sleep(1)
        # 点击一个xpath定位的元素
        self.driver.find_element_by_xpath("").click()
        time.sleep(1)
        # 给输入id定位的输入框传值
        self.driver.find_element_by_accessibility_id("").set_value("iostest")
        time.sleep(1)
        # 截图保存到当前文件
        self.driver.save_screenshot('./1.png')
        time.sleep(2)
        # 关闭app
        self.driver.close_app()


if __name__ == '__main__':
    a =Appium()
    a.test()


 

你可能感兴趣的:(mac自动化测试)