2016年2月29日,星期一

如何在Appium中进行水平滚动?



在上一篇文章中,我们已经看到了如何在Appium中执行垂直滚动,现在轮到学习在Appium中进行水平滚动了。现在许多应用程序都有水平选项卡滚动和测试,这似乎首先具有挑战性,但是通过这篇文章,您将能够编写appium测试用例非常有效。我们将使用ToucAction类和driver.swipe()方法获得所需的结果。

正在测试的应用程序-
假设您有一个带有15个水平制表符的应用程序,名称分别为 tab1,tab2,tab3 直到 tab15

测试案例方案-
1.启动应用
2.执行从右到左的标签,直到我们看到 tab8.
3.点击 tab8.

查找Y坐标-
我们需要屏幕的y坐标 并发现有两种方法-
1.使用指针位置-
   *转到手机设置
   *单击开发人员选项
   *启用指针位置 
   *打开您的应用,然后单击水平选项卡的中间,然后您将得到x和y
      坐标,但记下y坐标。

2.使用UI自动器- 
  *打开UIAutomator检查器。
   * Take screen shot.
  *单击水平选项卡的中间,并记下右上角显示的y坐标。

测试用例 -
1.我们将执行 horizo​​ntalScroll() 方法。在此方法中,我们将获得屏幕尺寸,我们可以从右到左滑动,在右侧找到起点,在左侧找到终点。我们也有y坐标,因此我们可以使用driver.swipe()执行水平滚动,如下所示
2.我们使用for循环滚动直到找到期望的选项卡。

public class HorizontalTabscroll
{
    鸦片Driver driver;
    Dimension size; 
    @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 testHorizontalScroll()throws Exception
    {
        for(int i=0;i<4;i++)
        {
            Thread.sleep(2000);
            if (driver.findElement(By.name("tab8")).isDisplayed())
            {
                driver.findElement(By.name("tab8")).click();
                break;
            }
            else
            {
                horizontalScroll();
            }

        }
    }
    public void horizontalScroll()
    {
        size=driver.manage().window().getSize();
        int x_start=(int)(size.宽度*0.60);
        int x_end=(int)(size.宽度*0.30);
        int y=130;
        driver.swipe(x_start,y,x_end,y,4000);
    }
    @After
    public void testCaseTearDown()
    {
        driver.quit();
    }
}

注意 -可以使用start_y和end_y将相同的测试用例用于Vertical Scroll,并且x值将是恒定的(尝试一下)。

借助本教程,您可以为右向左水平滚动/滑动,左向右水平滚动/滑动,水平滚动编写appium测试代码,直到找到匹配的元素。

希望本教程对您有所帮助。分享您的反馈意见并 以下评论部分的问题。请在社交媒体上关注我 获取最新的帖子更新。

8条评论:

  1. IT不适用于ios设备。

    回复删除
  2. IT不适用于ios设备。

    回复删除
  3. 你能添加这个视频吗

    回复删除
  4. 我不建议使用Swipe,但可以使用以下代码。
    el = self.driver.find_element_by_xpath("// XCUIElementTypeTable [1] / XCUIElementTypeCell [1]")
    #长按删除表的第一行,将其移至左侧释放并执行。然后点击并执行。
    el_size = el.size
    打印el_size ['width']
    打印el_size ['height']
    touch = TouchAction(self.driver)
    touch.press(el,375,65).wait(15).move_to(el,225,65).release()
    touch.perform()
    #删除元素,我们需要点击相同的位置
    touch.tap(el,375,65,1).perform()
    //appium.readthedocs.io/en/stable/en/writing-running-appium/touch-actions/

    回复删除
  5. 但是此代码仅特定于特定设备,如果我将此代码用于4英寸电话和6英寸电话,是否可以使用?

    回复删除
  6. 该代码根本无法滑动。不建议使用滑动方式

    回复删除
    回覆
    1. 即使最新的appium java客户端7.3.0也不推荐使用Swipe方法

      删除
  7. 借助本教程,您可以为右向左水平滚动/滑动,左向右水平滚动/滑动,水平滚动编写appium测试代码,直到找到匹配的元素。 古董金耳环设计与价格 , 挡板头件 , 纸板首饰盒 , nishat亚麻围巾

    回复删除