Appium - iOS 各類問題彙總

 Appium - iOS 各類問題彙總
java

做者: Max.Bainode

時間: 2014/10ios



Appium - iOS 各類問題彙總


 1. Appium 滑動:

 swipe 有三種方式:
 第一種:swipenpm

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%xcode

duration單位爲秒, Android 可以設置0.1-60,iOS設置0.5-60app

需要滑動特定的對象時需要指定的element。僅僅是在名目上滑動式就可以不指定elementless

另一種: flick 差異swipe是沒有durationide

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的意思是滑動到手機的頂部,左右也是同樣,左滑就是Rightthis

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的包,不用解壓。

對於真機的,眼下尚未測試,興許有問題會更新。

相關文章
相關標籤/搜索