无法使用 Appium 移动 Android SeekBar
Can't move Android SeekBar with Appium
我有一个像这样的自定义 Android 搜索栏,以及它可以移动到的位置。从中间开始:
我想先移动滑块,然后检查它是否已保存。我有一个使用 TouchAction 的方法:
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();
}
我注意到的一件事:
- 搜索栏根本不动
- getX 和 getY 始终是相同的值,即使我在调用此方法之前尝试将滑块设置回最左边
我试过这样的 sendkeys:
seekbar.sendKeys("0.5");
它起作用了:它把滑块移到了最左边,它只对 0.5 起作用,当我输入一个 0 到 1 范围内的数字时,它不起作用
非常感谢任何帮助。谢谢
我刚刚解决了我的问题:我没有使用 press(),而是尝试了 longpress(),它非常有效!我可以将搜索栏移动到我想要的位置。
@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();
}
这对我很有效
我试过这样 seekbar.sendKeys("50");
它对我有用。(0(min) - 100(max))
我有一个像这样的自定义 Android 搜索栏,以及它可以移动到的位置。从中间开始:
我想先移动滑块,然后检查它是否已保存。我有一个使用 TouchAction 的方法:
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();
}
我注意到的一件事:
- 搜索栏根本不动
- getX 和 getY 始终是相同的值,即使我在调用此方法之前尝试将滑块设置回最左边
我试过这样的 sendkeys:
seekbar.sendKeys("0.5");
它起作用了:它把滑块移到了最左边,它只对 0.5 起作用,当我输入一个 0 到 1 范围内的数字时,它不起作用
非常感谢任何帮助。谢谢
我刚刚解决了我的问题:我没有使用 press(),而是尝试了 longpress(),它非常有效!我可以将搜索栏移动到我想要的位置。
@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();
}
这对我很有效
我试过这样 seekbar.sendKeys("50"); 它对我有用。(0(min) - 100(max))