Appium - iOS 各類問題彙總
java
做者: Max.Bainode
時間: 2014/10ios
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);
重要:方向和咱們以爲的方向相反。比方要向下滑,就用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);
爲了不輸入框輸入內容後鍵盤遮擋控件,需要對鍵盤隱藏
Android可以設置例如如下cap來輸入中文,同一時候能達到隱藏鍵盤的效果,但是這個設置僅僅能針對Android。
capabilities.setCapability("unicodeKeyboard", true); capabilities.setCapability("resetKeyboard", true);
hideKeyboard(HideKeyboardStrategy.PRESS_KEY, "Done");
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/
Sendkeys iOS沒法輸入
可以試用setvalue取代
((MobileElement)_driver.findElement(by)).setValue(sText);
isAppInstalled這種方法在Android裏面可以使用(模擬器和真機都試過)
但是在iOS裏面使用模擬器返回值老是false,沒有錯誤信息,後來查看源碼發現
cb(new Error("You can not call isInstalled for the iOS simulator!"));
相同removeApp/installApp 都是
官網說可以用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 的問題,尚未驗證
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
剛開始都想基於開始測試,發現怎麼都是不行,不管App,和ipa格式的。現在我總結了一下分享給你們。
不管app的仍是ipa的都要區分模擬器版本號和真機版本號
對於模擬器的,app的Appium不用解壓,直接安裝,ipa的Appium會解壓找出app而後安裝,問題來了,Appium用的解壓工具是unzip。假設你的ipa裏面包括中文的文件名稱,預計要出問題了,這個是unzip的老問題,網上有方案。不在這裏說了,最簡單的就是使用app的包,不用解壓。
對於真機的,眼下尚未測試,興許有問題會更新。