环境准备

  • brew install carthage
  • npm i -g ios-deploy
  • brew install libimobiledevice --HEAD
  • brew install ideviceinstaller
  • 使用brew安装时,如果出现update home brew 直接control C退出更新

iOS平台的特殊性:

  • 封闭

    • 系统封闭
    • 应用分发渠道封闭,仅限app store;
    • 软件和硬件绑定,例如iOS测试只能使用mac
  • 文档稀少 封闭导致的
  • 行业交流少,网上关于自动化测试的

主流移动测试框架

  • Calabash-iOS 需要被测应用的源码才能测试
  • XCTest 苹果主推的,用的人少,但基于XCTest的框架却很多
  • Earl Grey && KIF 谷歌开发的单元测试框架,需要程序源码,基于XCTest
  • WebDriverAgent Facebook推出的,基于XCtest,不需要源码。WDA是一个http服务器。
  • Appium 是一个代理
  • Ui automation(在Xcode8后废弃)

测试环境准备

  • 启动WDA

    • 切换到WebDriverAgent目录下,先执行bootstrap.sh脚本 ./Scripts/bootstrap.sh
    • Xcode打开WDA,product -test
  • iproxy 8100 8100
  • 启动Appium服务,使用放大镜Start Inspector Session
    • 在capability中输入以下配置,启动session
    {
"platformName": "iOS",
"automationName": "XCUITest",
"usePrebuiltWDA": true,
"deviceName": "iPhone",
"udid": "",
"bundleId": "",
"newCommandTimeout":600
}

注意:

1.查看应用的报名: ideviceinstaller -l

2.查看本机IP: iconfig en0

3.安装应用: ideviceinstall -i *.ipa

4.查看手机udid: idevice_id -l

5.启动时,要选择Automatic Server,不要选择Custom Server

6.newCommandTimeout类型选择number,不要选择text。

使用appium提供的工程测试

appium提供的example:https://github.com/appium/ios-uicatalog
打开终端,将代码克隆下来 git clone https://github.com/appium/ios-uicatalog
xcode打开,product-run,将应用安装到手机
也可以使用build将工程打成app,如果打成app,要查找app导出目录
#python
#coding:utf-8
# This sample code uses the Appium python client
# pip install Appium-Python-Client
# Then you can paste this into a file and simply run with Python from appium import webdriver
import time caps = {}
caps["platformName"] = "iOS"
caps["automationName"] = "XCUITest"
caps["deviceName"] = "iPhone"
caps["udid"] = "527a084d6010b8179658ddeb5295428d1973cfa6"
caps["bundleId"] = "com.example.apple-samplecode.UICatalogcsj815379479"
caps["newCommandTimeout"] = 600 driver = webdriver.Remote("http://localhost:4723/wd/hub", caps) el1 = driver.find_element_by_xpath("(//XCUIElementTypeButton[@name=\"More Info\"])[1]")
el1.click()
el2 = driver.find_element_by_accessibility_id("Okay / Cancel")
time.sleep(2)
el2.click()
el3 = driver.find_element_by_accessibility_id("OK")
try:
assert el3.text=='OK','button not OK'
except AssertionError as e:
print(e)
driver.quit()

2. 使用Appium录制生成脚本


recorder里为记录的脚本

```
#python
# This sample code uses the Appium python client
# pip install Appium-Python-Client
# Then you can paste this into a file and simply run with Python

from appium import webdriver

from time import sleep

caps = {}

caps["platformName"] = "iOS"

caps["deviceName"] = "iphone"

caps["bundleId"] = "com.taobaobj.moneyshield"

caps["automationName"] = "XCUITest"

caps["udid"] = "527a084d6010b8179658ddeb5295428d1973cfa6"

caps["newCommandTimeout"] = "600"

caps["usePrebuiltWDA"] = True

driver = webdriver.Remote("http://localhost:4723/wd/hub", caps)

sleep(3)

el1 = driver.find_element_by_accessibility_id("工具箱")

el1.click()

el2 = driver.find_element_by_accessibility_id("诈骗举报")

el2.click()

el3 = driver.find_element_by_xpath("//XCUIElementTypeStaticText[@name="电话诈骗举报"]")

el3.click()

el4 = driver.find_element_by_xpath("//XCUIElementTypeApplication[@name="钱盾"]/XCUIElementTypeWindow[1]/XCUIElementTypeOther/XCUIElementTypeOther/XCUIElementTypeOther/XCUIElementTypeOther/XCUIElementTypeOther/XCUIElementTypeOther/XCUIElementTypeOther/XCUIElementTypeOther/XCUIElementTypeScrollView/XCUIElementTypeOther/XCUIElementTypeOther[1]")

el4.send_keys("13693347586")

el5 = driver.find_element_by_xpath("(//XCUIElementTypeImage[@name="radiobox_normal"])[3]")

el5.click()

el6 = driver.find_element_by_accessibility_id("请简要描述一下诈骗来电的内容,比如来电时间,对方特征,被骗方式等")

el6.send_keys("骗子,大骗子")

el7 = driver.find_element_by_accessibility_id("诈骗内容")

el7.click()

el8 = driver.find_element_by_accessibility_id("提交举报")

el8.click()

6-3-1appium iOS的更多相关文章

  1. iOS可视化动态绘制连通图

    上篇博客<iOS可视化动态绘制八种排序过程>可视化了一下一些排序的过程,本篇博客就来聊聊图的东西.在之前的博客中详细的讲过图的相关内容,比如<图的物理存储结构与深搜.广搜>.当 ...

  2. 【疯狂造轮子-iOS】JSON转Model系列之二

    [疯狂造轮子-iOS]JSON转Model系列之二 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 上一篇<[疯狂造轮子-iOS]JSON转Model系列之一> ...

  3. 【疯狂造轮子-iOS】JSON转Model系列之一

    [疯狂造轮子-iOS]JSON转Model系列之一 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 之前一直看别人的源码,虽然对自己提升比较大,但毕竟不是自己写的,很容易遗 ...

  4. iOS总结_UI层自我复习总结

    UI层复习笔记 在main文件中,UIApplicationMain函数一共做了三件事 根据第三个参数创建了一个应用程序对象 默认写nil,即创建的是UIApplication类型的对象,此对象看成是 ...

  5. iOS代码规范(OC和Swift)

    下面说下iOS的代码规范问题,如果大家觉得还不错,可以直接用到项目中,有不同意见 可以在下面讨论下. 相信很多人工作中最烦的就是代码不规范,命名不规范,曾经见过一个VC里有3个按钮被命名为button ...

  6. JS调用Android、Ios原生控件

    在上一篇博客中已经和大家聊了,关于JS与Android.Ios原生控件之间相互通信的详细代码实现,今天我们一起聊一下JS调用Android.Ios通信的相同点和不同点,以便帮助我们在进行混合式开发时, ...

  7. 告别被拒,如何提升iOS审核通过率(上篇)

    iOS审核一直是每款移动产品上架苹果商店时面对的一座大山,每次提审都像是一次漫长而又悲壮的旅行,经常被苹果拒之门外,无比煎熬.那么问题来了,我们有没有什么办法准确把握苹果审核准则,从而提升审核的通过率 ...

  8. Swift3.0服务端开发(一) 完整示例概述及Perfect环境搭建与配置(服务端+iOS端)

    本篇博客算是一个开头,接下来会持续更新使用Swift3.0开发服务端相关的博客.当然,我们使用目前使用Swift开发服务端较为成熟的框架Perfect来实现.Perfect框架是加拿大一个创业团队开发 ...

  9. Summary of Critical and Exploitable iOS Vulnerabilities in 2016

    Summary of Critical and Exploitable iOS Vulnerabilities in 2016 Author:Min (Spark) Zheng, Cererdlong ...

  10. 黑云压城城欲摧 - 2016年iOS公开可利用漏洞总结

    黑云压城城欲摧 - 2016年iOS公开可利用漏洞总结 作者:蒸米,耀刺,黑雪 @ Team OverSky 0x00 序 iOS的安全性远比大家的想象中脆弱,除了没有公开的漏洞以外,还有很多已经公开 ...

随机推荐

  1. 玩转X-CTR100 l STM32F4 l U-Blox NEO-6M GPS卫星定位-nmealib解码库移植解码

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ]      本文介绍X-CTR100控制器 扩展GPS ...

  2. CUDA ---- Memory Access

    Memory Access Patterns 大部分device一开始从global Memory获取数据,而且,大部分GPU应用表现会被带宽限制.因此最大化应用对global Memory带宽的使用 ...

  3. 自定义页签logo

    1.webpack.prod.conf new HtmlWebpackPlugin({ filename: process.env.NODE_ENV === 'testing' ? 'index.ht ...

  4. HDU 3046

    http://acm.hdu.edu.cn/showproblem.php?pid=3046 典型的最小割模型 #include <iostream> #include <cstdi ...

  5. 2018C语言助教总结

    回顾 很荣幸得到各位老师的认可,担任计科3班和4班的C语言课程助教,很感谢车老师和牛老师一学期的帮助,使得我更好的担任助教一职.我班学生59名,很愉快的与同学们度过一个美好的学期,其实作为助教同样从学 ...

  6. C高级第三次作业(1)

    6-1 输出月份英文名 1.设计思路: 1.定义一个字符串数组将12个月的英文加进去: 2.判断输入的数是否大于等于1小于等于12: 3.若是 则返还s[n-1]; 4.否则返还NULL: 源代码: ...

  7. win10系统如何进入BIOS模式

    前言 安装双系统时,一般需要设置一些BOOT的选项值,比如security boot的选项.以前都是重启之后按F2或者F12等进入BIOS模式的, 但是博主按照这种方式没有正确进入,本文就针对这一问题 ...

  8. [Perl] 删除数组中重复元素

    写一个小程序时候,需要去除一个数组中的重复元素,搜索了一下,找到的代码主要是两种,一种是使用grep函数,一种是转换为hash表,代码分别如下: 使用grep函数代码片段:代码: my @array ...

  9. 树莓派做下载机+Web服务器(Aria2下载+yaaw做UI+nginx)

    今天收到了小派,UK产的绿板子,还配了个透明盒子,装在里面闪亮亮的很好看,而且只有卡片大小,寻思着用它做什么好呢?想来想去,看到人家拿小派作家庭媒体中心,还有人拿它当下载机,于是就萌生了一个家庭媒体中 ...

  10. JS 网页快捷键设置

    我们希望能用快捷键代替鼠标点击做一些事情,例如一个典型的应用就是论坛上常用的Ctrl + Enter 快捷发帖子.就以Ctrl+Enter快捷发帖子为例,实质上呢,就是通过JS脚本,捕获系统的onke ...