Appium - iOS 各种问题汇总

作者: Max.Bai

时间: 2014/10

Appium - iOS 各种问题汇总

 1. Appium 滑动:

swipe 有三种方式:

 第一种:swipe

  1. JavascriptExecutor js = (JavascriptExecutor) driver;
  2. WebElement element = driver.findElementByXPath("xpath");
  3. HashMap<String, Double> swipeObject = new HashMap<String, Double>();
  4. swipeObject.put("startX", startX);
  5. swipeObject.put("startY", startY);
  6. swipeObject.put("endX", endX);
  7. swipebject.put("endY", endY);
  8. swipeObject.put("duration", duration);
  9. swipeObject.put("element", Double.valueOf(((RemoteWebElement) element).getId()));
  10. js.executeScript("mobile: swipe", swipeObject);
  1.  

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

  1. JavascriptExecutor js = (JavascriptExecutor) driver;
  2. WebElement element = driver.findElementByXPath("xpath");
  3. HashMap<String, Double> flickObject = new HashMap<String, Double>();
  4. flickObject.put("startX", 0.8);
  5. flickObject.put("startY", 0.5);
  6. flickObject.put("endX", 0.2);
  7. flickObject.put("endY", 0.5);
  8. flickObject.put("element", Double.valueOf(((RemoteWebElement) element).getId()));
  9. js.executeScript("mobile: flick", flickObject);

第三种: scroll only for iOS scrollViewscroll方向滑动:

  1. JavascriptExecutor js = (JavascriptExecutor) _driver;
  2. HashMap<String, String> scrollObject = new HashMap<String, String>();
  3. scrollObject.put("direction", sDrection);
  4. js.executeScript("mobile: scroll", scrollObject);

方向接受參数:Right, Left, Up, Down

重要:方向和我们觉得的方向相反。比方要向下滑,就用Up,应为Up的意思是滑动到手机的顶部,左右也是一样,左滑就是Right

scroll对象滑动:

  1. JavascriptExecutor js = (JavascriptExecutor) driver;
  2. WebElement element = driver.findElementByXPath("scrollview中元素的xpath");
  3. HashMap<String, String> scrollObject = new HashMap<String, String>();
  4. scrollObject.put("element", ((RemoteWebElement) element).getId());
  5. js.executeScript("mobile: scroll", scrollObject);

2. 隐藏键盘hideKeyboard()

为了避免输入框输入内容后键盘遮挡控件,须要对键盘隐藏

Android能够设置例如以下cap来输入中文,同一时候能达到隐藏键盘的效果,可是这个设置仅仅能针对Android。

  1. capabilities.setCapability("unicodeKeyboard", true);
  2. capabilities.setCapability("resetKeyboard", true);

iOS 就必须掉用方法hideKeyboard()

默认是点非输入框的地方键盘自己主动隐藏。假设不生效(开发没有做这个效果),就须要使用其它方法,比方:通过点击“Done”来隐藏键盘

  1. 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 版本号更换命令,改动成自己版本号相应的路径就好了:

  1. sudo xcode-select -switch /Applications/Xcode-4.6.app/Contents/Developer/

4. Sendkeys vs setValue

Sendkeys iOS无法输入

能够试用setvalue取代

  1. ((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 各种问题汇总的更多相关文章

  1. Appium - iOS Mac环境结构

    Appium - iOS Mac环境结构 笔者: Max.Bai 时间: 2014/10 1. iOS开发环境的搭建 1.1系统要求 MacOS X 10.7 or higher, 10.9.2 re ...

  2. iOS 学习资料汇总

    (适合初学者入门) 本文资料来源于GitHub 一.视频教程(英文) Developing iOS 7 Apps for iPhone and iPad斯坦福开放教程之一, 课程主要讲解了一些 iOS ...

  3. 【转】NO.3、python+appium+ios,遍历真机元素,得到webview

    pyhton+appium+iOS,遍历真机webview.是遍历真机的webview,遍历模拟器的webview请另寻方法. 1.mac上安装ios_webkit_debug_proxy 命令:br ...

  4. mac上搭建appium+IOS自动化测试环境(一)

    阅读须知 由于OS X系统最近才开始接触,所以有些东西也不是很清楚,这里只提供方法不提供原理,能解释清楚的我也会尽量解释.可能也有一些地方说的不严谨或有错的,还望大家指点一二. 实验环境 操作系统: ...

  5. mac上搭建appium+IOS自动化测试环境(二)

    上一篇: mac上搭建appium+IOS自动化测试环境(一) 9.安装appium-xcuitest-driver依赖 进入WebDriverAgent安装目录,运行bootstrap 首先进入目录 ...

  6. appium ios 真机自动化环境搭建

    近期由于工作需要,本小菜在弄appium+ios+iphone真机的移动自动化,在网上找寻各种资料,发现针对IOS方面的资料少之又少,公司其它部门的弄过的同事也寥寥无几,即使有,也是安卓方面的.本次书 ...

  7. Mac+appium+iOS 环境搭建

    Mac+appium+iOS 环境搭建,需要用到的信息如下,参考搭建环境. 1.安装brew,安装介绍:https://jingyan.baidu.com/article/fec7a1e5ec3034 ...

  8. appium+ios+macaca自动化测试环境部署

    环境准备(供参考) mac v10.14.4 xcode v10.2 python v3.6 确保上述环境已满足,即可开始搭建appium+ios测试环境 1 jdk安装 下载mac版本的jdk并安装 ...

  9. appium ios真机自动化环境搭建&运行(送源码)

    appium ios真机自动化环境搭建&运行(送源码) 原创: f i n  测试开发社区  6天前 Appium测试环境的搭建相对比较烦琐,不少初学者在此走过不少弯路 首先是熟悉Mac的使用 ...

随机推荐

  1. 基于visual Studio2013解决C语言竞赛题之0404循环求和

      题目 解决代码及点评 这道题考验for循环和一个简单的算法 因为每次累加的值有规律,后面一次累加是前面一次累加的两倍 所以可以用简单的循环,计算累加项和累加结果 /************ ...

  2. 统计单词频率--map

    问题描述: 输入一个单词列表,每行一个单词,统计单词出现的频率 思路: 主要是使用c++中的map容器.map实质上是一个二叉查找树,可以做到插入.删除.查询,平均查询时间在O(logn).n为map ...

  3. java学习之观察者设计模式

    package com.gh.observer; import java.util.Observable; /** * 被观察者对象 * 必须继承被观察者抽象类 * @author ganhang * ...

  4. Poj 2255 Tree Recovery(二叉搜索树)

    题目链接:http://poj.org/problem?id=2255 思路分析:根据先序遍历(如DBACEGF)可以找出根结点(D),其后为左右子树:根据中序遍历(如ABCDEFG),已知根结点(D ...

  5. 一次搞定cocos2d-x的 Android.mk 文件

    cocos2d-x 打 android 包时要修改 Android.mk 文件,但每次修改很麻烦,如果源文件很多的话就坑死了,也可以写一个脚本来自动生成这个文件,但每次还要重新生成一下,将其修改下面的 ...

  6. python3.4.3将汉字转换为大写拼音首字母

    from pypinyin import pinyin a=pinyin(u'杨强',type=FIRST_LETTER)    --->此时返回一个列表并赋给a(元素也是列表) b=[]  - ...

  7. BNU 4067 求圆并

    好久没写过单组数据的题目了 QAQ 赤裸裸的模板题 #include <cstdio> #include <cstring> #include <iostream> ...

  8. python读写zip文件

    zipfile.ZipFile(fileName[, mode[, compression[, allowZip64]]]) fileName是没有什么疑问的了. mode和一般的文件操作一样,'r' ...

  9. 快速解决PDF文档加密不能打印问题_百度经验

    快速解决PDF文档加密不能打印问题_百度经验     快速解决PDF文档加密不能打印问题         |        浏览:182        |        更新:2014-01-06 1 ...

  10. block 解析 - block变量

    block变量 上一篇 讲的是block静态变量的特性,这里我们来看一下_block变量.引用官方: You can specify that an imported variable be muta ...