Appium - iOS 各种问题汇总
Appium - iOS 各种问题汇总
作者: Max.Bai
时间: 2014/10
Appium - iOS 各种问题汇总
1. Appium 滑动:
swipe 有三种方式:
第一种:swipe
JavascriptExecutor js = (JavascriptExecutor) driver;
WebElement element = driver.findElementByXPath("xpath");
HashMap<String, Double> swipeObject = new HashMap<String, Double>();
swipeObject.put("startX", startX);
swipeObject.put("startY", startY);
swipeObject.put("endX", endX);
swipebject.put("endY", endY);
swipeObject.put("duration", duration);
swipeObject.put("element", Double.valueOf(((RemoteWebElement) element).getId()));
js.executeScript("mobile: swipe", swipeObject);
X,Y可为coordinator,也能够是percent,大于1 为coordinator。 小于1 为percent,比方0.5 代表50%
duration单位为秒, Android 能够设置0.1-60,iOS设置0.5-60
须要滑动特定的对象时须要指定的element。仅仅是在名目上滑动式就能够不指定element
另外一种: flick 差别swipe是没有duration
JavascriptExecutor js = (JavascriptExecutor) driver;
WebElement element = driver.findElementByXPath("xpath");
HashMap<String, Double> flickObject = new HashMap<String, Double>();
flickObject.put("startX", 0.8);
flickObject.put("startY", 0.5);
flickObject.put("endX", 0.2);
flickObject.put("endY", 0.5);
flickObject.put("element", Double.valueOf(((RemoteWebElement) element).getId()));
js.executeScript("mobile: flick", flickObject);
第三种: scroll only for iOS scrollViewscroll方向滑动:
JavascriptExecutor js = (JavascriptExecutor) _driver;
HashMap<String, String> scrollObject = new HashMap<String, String>();
scrollObject.put("direction", sDrection);
js.executeScript("mobile: scroll", scrollObject);
方向接受參数:Right, Left, Up, Down
重要:方向和我们觉得的方向相反。比方要向下滑,就用Up,应为Up的意思是滑动到手机的顶部,左右也是一样,左滑就是Right
scroll对象滑动:
JavascriptExecutor js = (JavascriptExecutor) driver;
WebElement element = driver.findElementByXPath("scrollview中元素的xpath");
HashMap<String, String> scrollObject = new HashMap<String, String>();
scrollObject.put("element", ((RemoteWebElement) element).getId());
js.executeScript("mobile: scroll", scrollObject);
2. 隐藏键盘hideKeyboard()
为了避免输入框输入内容后键盘遮挡控件,须要对键盘隐藏
Android能够设置例如以下cap来输入中文,同一时候能达到隐藏键盘的效果,可是这个设置仅仅能针对Android。
capabilities.setCapability("unicodeKeyboard", true);
capabilities.setCapability("resetKeyboard", true);
iOS 就必须掉用方法hideKeyboard()
默认是点非输入框的地方键盘自己主动隐藏。假设不生效(开发没有做这个效果),就须要使用其它方法,比方:通过点击“Done”来隐藏键盘
hideKeyboard(HideKeyboardStrategy.PRESS_KEY, "Done");
3. Xcode 版本号
Appium 1.2.* 相应Xcode5.0
Appium 1.3 相应Xcode6.0
可能出现错误:
Error: Could not find Automation.tracetemplate
Error: Could not find ios simulator binary at /application/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator
mac 版本号更换命令,改动成自己版本号相应的路径就好了:
sudo xcode-select -switch /Applications/Xcode-4.6.app/Contents/Developer/
4. Sendkeys vs setValue
Sendkeys iOS无法输入
能够试用setvalue取代
((MobileElement)_driver.findElement(by)).setValue(sText);
5. isAppInstalled/removeApp/installApp
isAppInstalled这种方法在Android里面能够使用(模拟器和真机都试过)
可是在iOS里面使用模拟器返回值总是false,没有错误信息,后来查看源码发现
cb(new Error("You can not call isInstalled for the iOS simulator!"));
相同removeApp/installApp 都是
6. App path 设置
官网说能够用remote URL设置cap 的app
官网说明例如以下:
app The absolute local path or remote http URL to an .ipa or .apk file, or a .zip containing one of these. Appium will attempt to install this app binary on the appropriate device first. e.g.: /abs/path/to/my.apk or http://myapp.com/app.ipa
我为了方便集中管理安装程序所以使用了http://sssss/x.zip
坑爹的问题来了,Android根本就不支持,报错找不到提供的app
iOS 还好,能够安装,可是測试中发现好多控件和放在本地全然不是一个效果。。。
所以还是老老实实的使用本地设置吧
ps: 貌似1.3攻克了Android http 的问题,还没有验证
7. sudo安装Appium后无法启动
sudo npm install -g appium后果
Appium will not work if used or installed with sudo
网上有高人攻克了这个问题
步骤例如以下:
步骤1. 改变node的全部者
cd /usr/local/lib
sudo chown -R bixiaopeng node_modules
步骤2. 卸载appium
npm uninstall appium -g
步骤3. 又一次安装appium
npm install -g appium
步骤4. 启动
appium
原链接:http://blog.csdn.net/wirelessqa/article/details/29188665
8. App or IPA ?
刚開始都想基于開始測试,发现怎么都是不行,无论App,和ipa格式的。如今我总结了一下分享给大家。
无论app的还是ipa的都要区分模拟器版本号和真机版本号
对于模拟器的,app的Appium不用解压,直接安装,ipa的Appium会解压找出app然后安装,问题来了,Appium用的解压工具是unzip。假设你的ipa里面包括中文的文件名称,预计要出问题了,这个是unzip的老问题,网上有方案。不在这里说了,最简单的就是使用app的包,不用解压。
对于真机的,眼下还没有測试,兴许有问题会更新。
Appium - iOS 各种问题汇总的更多相关文章
- Appium - iOS Mac环境结构
Appium - iOS Mac环境结构 笔者: Max.Bai 时间: 2014/10 1. iOS开发环境的搭建 1.1系统要求 MacOS X 10.7 or higher, 10.9.2 re ...
- iOS 学习资料汇总
(适合初学者入门) 本文资料来源于GitHub 一.视频教程(英文) Developing iOS 7 Apps for iPhone and iPad斯坦福开放教程之一, 课程主要讲解了一些 iOS ...
- 【转】NO.3、python+appium+ios,遍历真机元素,得到webview
pyhton+appium+iOS,遍历真机webview.是遍历真机的webview,遍历模拟器的webview请另寻方法. 1.mac上安装ios_webkit_debug_proxy 命令:br ...
- mac上搭建appium+IOS自动化测试环境(一)
阅读须知 由于OS X系统最近才开始接触,所以有些东西也不是很清楚,这里只提供方法不提供原理,能解释清楚的我也会尽量解释.可能也有一些地方说的不严谨或有错的,还望大家指点一二. 实验环境 操作系统: ...
- mac上搭建appium+IOS自动化测试环境(二)
上一篇: mac上搭建appium+IOS自动化测试环境(一) 9.安装appium-xcuitest-driver依赖 进入WebDriverAgent安装目录,运行bootstrap 首先进入目录 ...
- appium ios 真机自动化环境搭建
近期由于工作需要,本小菜在弄appium+ios+iphone真机的移动自动化,在网上找寻各种资料,发现针对IOS方面的资料少之又少,公司其它部门的弄过的同事也寥寥无几,即使有,也是安卓方面的.本次书 ...
- Mac+appium+iOS 环境搭建
Mac+appium+iOS 环境搭建,需要用到的信息如下,参考搭建环境. 1.安装brew,安装介绍:https://jingyan.baidu.com/article/fec7a1e5ec3034 ...
- appium+ios+macaca自动化测试环境部署
环境准备(供参考) mac v10.14.4 xcode v10.2 python v3.6 确保上述环境已满足,即可开始搭建appium+ios测试环境 1 jdk安装 下载mac版本的jdk并安装 ...
- appium ios真机自动化环境搭建&运行(送源码)
appium ios真机自动化环境搭建&运行(送源码) 原创: f i n 测试开发社区 6天前 Appium测试环境的搭建相对比较烦琐,不少初学者在此走过不少弯路 首先是熟悉Mac的使用 ...
随机推荐
- Logback相关知识汇总
例如:%-4relative 表示,将输出从程序启动到创建日志记录的时间 进行左对齐 且最小宽度为4格式修饰符,与转换符共同使用:可选的格式修饰符位于“%”和转换符之间.第一个可选修饰符是左对齐 标志 ...
- 解题报告 HDU1789 Doing Homework again
Doing Homework again Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64 ...
- 解决安装oracle后系统变慢问题
Oracle数据库是一个很占资源的软件,光一个实例服务所占内存,根据其安装时分配的内存就至少要达到256MB以上,再加上其他附属服务,光内存就要占用物理内存的400M左右,虚拟内存也会有等值或更高的损 ...
- PHP 自学之路-----XML编程(Xpath技术,simpleXml技术)基础入门
XPAth技术 XPath的设计的核心思想,可以通过xpath迅速简介的定位到你希望查找的节点.主要目的是描述节点相对其他节点的位置,可以取得所有符合条件的节点,成为[位置路径]. Xapth主要用来 ...
- iOS中的图像处理(二)——卷积运算
关于图像处理中的卷积运算,这里有两份简明扼要的介绍:文一,文二. 其中,可能的一种卷积运算代码如下: - (UIImage*)applyConvolution:(NSArray*)kernel { C ...
- STL之如何选择顺序容器
一.顺序容器的分类 顺序容器:vector向量.list链表.deque双端队列: 优先级最高的是vector向量,它的速度比较快,优点最多: 在程序设计中,容器可以切换: #include < ...
- C语言结构体变量内存分配与地址对齐
地址对齐简单来说就是为了提高访问内存的速度. 数组的地址分配比较简单,由于数据类型相同,地址对齐是一件自然而然的事情. 结构体由于存在不同基本数据类型的组合,所以地址对齐存在不同情况,但总体来说有以下 ...
- BZOJ 1965: [Ahoi2005]SHUFFLE 洗牌( 数论 )
对于第x个数, 下一轮它会到位置p. 当x<=N/2, p = x*2 当x>N/2, p = x*2%(N+1) 所以p = x*2%(N+1) 设一开始的位置为t, 那么t*2M%(N ...
- POJ 2479 不相交最大子段和
题目意思还是很好理解的,在一个数列中,找出不相交的两个子串使得其和最大. 解题思路: 对于每个i来说,求出[0 ~ i - 1] 的最大子段和以及[i ~ n - 1]的最大子段和,在加起来,求最大的 ...
- net core开发环境准备
net core开发环境准备 1.1 安装sdk和运行时 浏览器打开网址https://www.microsoft.com/net/download, 到.Net Core下载页面. 根据操作系统, ...