2016-03-04 14 views
6

Ich habe eine benutzerdefinierte Android Suchleiste wie diese, und die Positionen, wo es sich bewegen kann. Und es beginnt von der Mitte:Kann Android SeekBar nicht mit Appium verschieben

enter image description here

Ich mag den Schieber zuerst bewegen und dann prüfen, ob es gespeichert wird. Ich habe eine Methode, die ich verwende Touchaktionen:

public void moveSeekBar(){ 
    WebElement seekBar = appiumDriver.findElementById("com.feverapp:id/SymptomTrackingActivity_var"); 
    //Get start point of seekbar. 
    int startX = seekBar.getLocation().getX(); 
    System.out.println(startX); 
    //Get end point of seekbar. 
    int endX = seekBar.getSize().getWidth(); 
    System.out.println(endX); 
    //Get vertical location of seekbar. 
    int yAxis = seekBar.getLocation().getY(); 
    //Set slidebar move to position. 
    // this number is calculated based on (offset + 3/4width) 
    int moveToXDirectionAt = 786; 
    System.out.println("Moving seek bar at " + moveToXDirectionAt+" In X direction."); 
    //Moving seekbar using TouchAction class. 
    TouchAction act=new TouchAction(appiumDriver); 
    act.press(startX,yAxis).moveTo(moveToXDirectionAt,yAxis).release().perform(); 
} 

Etwas, das ich feststellen, dass:

  • seekbar nicht bei alle
  • getX bewegt sich und getY ist immer die gleichen Werte auch ich versucht zu setzen slider zurück zu sehr nach links, bevor ich diese Methode aufrufen

ich habe versucht, mit Tastaturbefehle wie folgt aus:

seekbar.sendKeys("0.5"); 

und es funktioniert: die Regler nach ganz links bewegt, und es funktionierte nur mit 0,5, wenn ich eine Zahl im Bereich von 0 bis 1 eingegeben, ist es nicht

funktioniert hat

Jede Hilfe sehr geschätzt . Danke

+0

Sie klicken und halten oder per Drag & Drop Versuchten? –

+0

@PankajKatiyar: Ich drücke und gehe zu und lasse los – Ragnarsson

Antwort

1

Ich habe gerade mein Problem gelöst: statt mit press() versuche ich longpress() und es funktioniert wie ein Zauber! Ich kann Suchleiste verschieben, wo ich will.

0
@Test 
    public void testSeekBar()throws Exception 
    { 
      //Locating seekbar using resource id 
      WebElement seek_bar=driver.findElement(By.id("seek_bar")); 
      // get start co-ordinate of seekbar 
      int start=seek_bar.getLocation().getX(); 
      //Get width of seekbar 
      int end=seek_bar.getSize().getWidth(); 
      //get location of seekbar vertically 
      int y=seek_bar.getLocation().getY(); 

     // Select till which position you want to move the seekbar 
     TouchAction action=new TouchAction(driver); 

     //Move it will the end 
     action.press(start,y).moveTo(end,y).release().perform(); 

     //Move it 40% 
     int moveTo=(int)(end*0.4); 
     action.press(start,y).moveTo(moveTo,y).release().perform(); 

    } 

Das ist für mich sehr gut funktioniert