2017-05-18 4 views
0

私はappを自動化するためにappiumとjavaを使用しています。私は特定のテキスト/要素までページ内をスクロールする必要があります。私は2日以来苦労していて、多くの解決策を試しましたが、それはうまく機能しません。 Javaスクリプトを試してみました :アンドロイドネイティブアプリのスクロールの問題

Appiumバージョン:1.4.0 のJavaクライアントのバージョン:4.1.2 ドライバ:RemoteWebDriver

Solution1.1すべてのソリューションやシナリオをダウンリスト。ここでは、コードは次のようになります。

JavascriptExecutor js = (JavascriptExecutor)driver; 
HashMap scrollObjects = new HashMap(); 
scrollObjects.put("direction", "down"); 
scrollObjects.put("text", "Yes"); 
js.executeScript("mobile: swipe", scrollObjects) 

ソリューション1.2:ここ

WebElement wb = driver.findElement(By.xpath("//*[@resource-id =   'com.practo.fabric:id/toolbar']/following-sibling::android.widget.LinearLayout")); 
JavascriptExecutor js = (JavascriptExecutor)driver; 
HashMap scrollObjects = new HashMap(); 
scrollObjects.put("direction", "down"); 
scrollObjects.put("text", "Yes"); 
scrollObjects.put("element",wb); 
js.executeScript("mobile: swipe", scrollObjects); 

問題は、私は、リストビューを持っていけないです。私は線形レイアウトを持っていますので、線形レイアウトxpathも一度提供してみましたが、運が一度もありませんでした。

対処方法2:私はRemoteWebDriverだとしてここ

org.openqa.selenium.Dimension size =driver.manage().window().getSize();  
int starty = (int) (size.height * 0.80); 
int endy = (int) (size.height * 0.20); 
int startx = size.width/2; 
driver.swipe(startx, starty, startx, endy, 3000); 
System.out.println("swiping is done "); 

driver.swipeがエラーを与えています。 AndroidDriverを使用しようとすると、非推奨となります。

この場合、どうすればよいですか?

答えて

0

appiumサーバーとJavaクライアントライブラリのバージョンが一致していないため、問題が発生しています。親切にappiumサーバを1.5/1.6にアップデートしてください。それ以外の場合は、java-clientライブラリバージョン2.1.0を使用できます。

appium 1.4でjava-client2.1.0を使用することを選択した場合、特定のテキストにスクロールする「scrollTo」という名前のメソッドがあります。このコンボのソリューション2で言及したように、「スワイプ」も使用しました。

0

JavaクライアントからAppiumDriverを使用して解決しました。最新のjava-clientバージョン(5.0.0-BETA6)を使用しているので、 "スワイプ"というメトスは非推奨です。それは動作します。

driver.swipe(300, 701, 300, 441, 3000); 

でもTouchActionクラスを使用して解決しました。

TouchAction action = new TouchAction(driver); 
action.press(300, 701).waitAction(2000).moveTo(300, 441).release(); 
action.perform(); 

注:座標はハードコードされています。