2016年2月11日星期四

如何使用Appium移动SeekBar?



在android中,SeekBar是一个非常酷的UI元素,它不仅看起来不错,而且允许用户触摸滑动。它具有各种用例和测试用例。在这篇文章中,我们将通过一个简单的示例学习使用Appium测试SeekBar。我创建了一个示例apk来显示一个演示,其中仅包含一个搜索栏,您可以将其滑动到所需位置。让我们通过Appium测试移动seekbar。

检查应用的屏幕截图和功能,我们将使用这些屏幕截图和功能进行测试。
Movinf Seekbar在Appium中
鸦片 Seekbar示例

我们现在编写的测试用例是测试移动SeekBar到末端,然后移动SeekBar到其宽度的40%。仔细检查测试用例。

影片教学-
 


@Before
    public void testCaseSetup()throws  Exception
    {

        DesiredCapabilities cap=new DesiredCapabilities();
        cap.setCapability(MobileCapabilityType.PLATFORM_NAME, "Android");
        cap.setCapability(MobileCapabilityType.DEVICE_NAME, "Android device");
        cap.setCapability(MobileCapabilityType.NEW_COMMAND_TIMEOUT, "4000");
        cap.setCapability(MobileCapabilityType.APP, "c://apks//seekbarsample.apk");
        cap.setCapability("noReset", true);
        driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), cap);

    }

    @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();

    }


    @After
    public void testCaseTearDown()
    {
        driver.quit();
    }

测试用例说明-
 
1.在开始移动SeekBar之前,我们需要找到Seetbar,因此第一行代码是使用ID定位它。
2.我们需要一个开始位置,该位置将为我们提供搜索杆的水平起点,然后我们需要垂直位置和SeekBar的宽度来执行移动动作。因此,请检查测试案例以了解我们 正在获取此信息。
3. 我们使用TounchActions执行所需的操作,因此创建了TouchAction类的操作对象。
4.我们编写了两个测试方案来测试移动的SeekBar到最后,以及测试SeekBar的移动40%

请与您的朋友分享此帖子,并在下面的评论框中分享您的问题,反馈或建议。按照质量检查自动化操作,以更新最新帖子。

6条评论:

  1. It's对我不起作用...。我正在为此Android应用程序运行。

    org.openqa.selenium.interactions.InvalidCoordinatesException:提供给交互操作的坐标无效。 (警告:服务器未提供任何堆栈跟踪信息)
    命令持续时间或超时:61毫秒

    回复删除
  2. 我可以使用上面的代码播放音频和视频吗?

    回复删除
  3. 无法解决的方法" Press"-在上面,当我尝试运行“搜索”栏时。

    回复删除
  4. 获取java.lang.NoSuchMethodError:org.openqa.selenium.remote.HttpCommandExecutor。(Ljava / util / Map; Ljava / net / URL; Lorg / openqa / selenium / remote / http / HttpClient $ Factory;)V

    回复删除
  5. 我有一个场景,搜索栏的默认位置是50%,我使用代码将搜索栏移动到100%的位置。
    发生滚动,但随后返回到50%的位置,而不是保持在100%的位置。
    请提出建议。
    我正在使用Appium版本1.7.2

    回复删除
  6. 在我的测试用例中,使用move_to(end)和一个条形(最小0,最大100),它并不是精确地移动到该条形的最大值,而是移动到值98。
    可能是什么原因??条形图的宽度是否考虑了填充或滑块的尺寸?
    谢谢,

    回复删除