經(jīng)常有人說appium的滑動實現(xiàn)是門藝術(shù)格嗅,實現(xiàn)不好就會出現(xiàn)事與愿違的操作,比如本來想要向上滑動跃赚,卻出現(xiàn)了下拉的動作笆搓,這樣使得我們在調(diào)試中就要花費大量時間去調(diào)試滑動操作。
以下是我在滑動操作中總結(jié)的一點經(jīng)驗纬傲,希望可以對遇到這方面問題的讀者有一點幫助满败;
總結(jié):
1、滑動時中間要加等待時間叹括,不加等待時間容易出錯算墨,而且加等待時間的長短也要掌握好,一般在200-1000毫秒之間應(yīng)該差不多汁雷,自己調(diào)試幾次感覺一下哪個時間比較穩(wěn)净嘀,每個程序可能會有所差異,還要注意的是ios和Android的等待時間也會有差異侠讯,ios等待1000毫秒可能出現(xiàn)長安的效果挖藏;
TouchAction tAction = new TouchAction(driver);
?tAction.press(x,y).waitAction(200).moveTo(x,y).release().perform();
2、滑動的坐標(biāo)點厢漩,滑動的坐標(biāo)點要掌握好熬苍,如果坐標(biāo)點掌握不好也會導(dǎo)致錯誤出現(xiàn),比如Android和ios就有很大區(qū)別,以下示例分別是ios和Android實現(xiàn)上滑動作柴底;
Android實現(xiàn)上滑:
int width=driver.manage().window().getSize().width;
int height=driver.manage().window().getSize().height;
int y1 =?height*3/4; //上滑的開始點婿脸,從y1開始也就是屏幕的四分之三處
int y2 =?height*1/4; //上滑的結(jié)束點,到y(tǒng)2結(jié)束也就是屏幕的四分之一處
TouchAction tAction =?new TouchAction(driver);
?tAction.press(width/2,y1).waitAction(200).moveTo(width/2,y2).release().perform();
ios實現(xiàn)上滑:
?tAction.press(width/2,y1).waitAction(200).moveTo(width/2,y2-y1).release().perform();
解釋:
比如總高度是1600柄驻,那么y1就是1200狐树,y2是400,高度從1200移動到400的位置鸿脓,這個大家應(yīng)該都能理解抑钟,而ios的結(jié)束點的高度坐標(biāo)是y2-y1,這樣得出的是一個負(fù)數(shù)野哭,這樣感覺不太容易理解在塔,這個可能是他們的算法有差異;我理解ios滑動算法是拨黔,y2-y1=-800蛔溃,然后y1是1200,y1移動到y(tǒng)2篱蝇,就是y1+y2=400贺待,就是說移動到400的位置,這樣理解感覺也能說的通零截,當(dāng)然只是我自己的理解麸塞,如有更好見解歡迎討論。