我想你可以試試先 click 一下那個 textfield,讓游標出現後才 send_keys
好奇現有的框架系统有哪些?
最近也正想加入平台系統
來自台灣的留言希望留下
1.檢查你 xcode 中登入的 apple id 是否有 iOS Developmen 的權限
2.檢查你的 ipa 是否有包含 simulator sdk,沒包含此 sdk 的 app 不能在 simulator 執行
我也有這個問題,appium log 在 sever 啟動時就建立了。換句話說,如果你的 server 沒有重啟過,那不管你跑多少條 test case 都會存在同一個 log,不僅檔案會越來越大,也會越來越難撈你要的資料。
我目前的做法是,用 Jenkins 控制整個流程,如下:
這樣可以確保每次的 appium log 都是當次 test 的 log,而不會一直重複寫同一個檔案,不過感覺是在繞遠路,希望 appium 官方可以提供一個方法不用這麼麻煩。
所謂定位,一定先有一個點,再從這個點往其他方向找,就像一定要有兩點才能成為一直線。
所以你要找某個東西,一定是先從一個你可以確認的位置再開始往旁邊找。
例如:driver.findElement()
就是從這個 app 最上層開始往下找。雖然不知道你想要什麼功能,不過我想從根節點開始定位應該不是什麼問題。
試出來了~
code:
List<WebElement> wblist= wd.findElements(By.xpath("//UIAApplication[1]/UIAWindow[1]/UIATableView[1]/*"));
System.out.println(wblist);
output:
[[[AppiumDriver: iOS on MAC (] -> xpath: //UIAApplication[1]/UIAWindow[1]/UIATableView[1]/*], [[AppiumDriver: iOS on MAC ()] -> xpath: //UIAApplication[1]/UIAWindow[1]/UIATableView[1]/*], [[AppiumDriver: iOS on MAC ()] -> xpath: //UIAApplication[1]/UIAWindow[1]/UIATableView[1]/*], [[AppiumDriver: iOS on MAC ()] -> xpath: //UIAApplication[1]/UIAWindow[1]/UIATableView[1]/*]]
可是好像看不到元素的類別,只知道有幾個元素
剛剛腦衝看錯了,下午開完會回來繼續
爬了一下文發現,原來 classname 在 ios 會自動轉成 type
如果我的目標是這裡:
xpath: //UIAApplication[1]/UIAWindow[1]/UIATableView[1]/UIATableCell[6]/UIASwitch[1]
那 code 應該是這樣:
WebElement aa = wd.findElement(By.xpath("//UIAApplication[1]/UIAWindow[1]/UIATableView[1]"));
List<WebElement> wblist= aa.findElements(By.className("UIATableCell"));
WebElement bb = wblist.get(5);
WebElement cc = bb.findElement(By.className("UIASwitch"));
cc.click();
xpath 跟 index 不一樣,xpath 從1開始,index 從0開始算
我的 appium 是 1.3.0-beta1 iOS 8.0
可能點 TextView 會沒有反應,試試看點別的東西像是 ImageView
某個 server 參數設定錯誤...
不存在就報錯 <--- 所以你應該用 try catch
try {
WebElement check = driver.findElementById("com.ef.efekta.englishtown:id/planButton");
//如果存在執行這裡
} catch (Error e) {
//如果不存在執行這裡
}
Java+JUnit+Ant+Jenkins
我是安裝 appium 1.3.0-beta1 可以用
安裝指令: npm install -g appium@1.3.0-beta1
然後開啟 appium 時指定版本: appium -a 127.0.0.1 -p 4725 --platform-version 8.0
腳本內也指定版本: set.setCapability("platformVersion","8.0");
就可以正常運行了,至於 1.2.4 我還沒有試過可不可以
duration 太久了吧? 動作太慢被程式判斷為點擊了 縮短一點試試看?
driver.executeScript("mobile: tap", new HashMap<String, Double>() {
{
put("tapCount", (double) 1);
put("touchCount", (double) 1);
put("duration", 0.5);
put("x", x);
put("y", y);
}
});
如果你要調整時間的話,修改 duration 的參數即可
Hi,我是 Giga,,來自台灣的一名大學應屆畢業新生,目前正在一家 app 公司擔任 QA intern 中
偶然在爬文章時找到這裡,覺得這邊很棒資源也很多,也學到了很多東西,希望能夠再精進一些
目前主要用的是 robotium 和 appium,最近剛學完了 jenkins,QQ: 1736169021
#6 楼 @xiaomayi0323 因為 UI 以後可能會改變,用 label name 定位元件才不會每次 UI 改版 script 都要重寫一次
*update
Github 上已經有人修復了這個 bug,如果有人也有同樣問題可以參考 Github 上的 code
https://github.com/moizjv/appium/commit/3eb3914707098b1d2a089a9f53fd1597cc7d1235
去官網下載.dmg 的 GUI client 端