在Appium中滚动

时间:2017-03-17 06:34:02

标签: appium

我正在使用Appium + Java自动化Tablet应用程序。在一个屏幕中,我有100多个字段(文本框+下拉列表)自动化,具有滚动视图。

为了自动化这100多个字段,我在单独的Excel工作表中列出了所有ID(该屏幕中的文本框和下拉列表)以及测试用例和测试数据。我的代码在循环中运行,选择测试用例,其数据和相关ID并执行。所以,我的代码看起来像:

loop : for(int j = 1; j <= fieldCount; j++)
{
    objElementRepositoryLibrary.setElementRepositoryDataLibrary(j);

    switch(ElementRepositoryLibrary.getElementType()) {

    case "AutoPopulated":
        System.out.println(ElementRepositoryLibrary.getElementValue() + " is Autopopulated");
        break;

    case "Dropdown": 
        ElementOperation.checkElementState(qdeDriver, ElementRepositoryLibrary.getLocator(), ElementRepositoryLibrary.getElementValue());

        if(ElementOperation.ElementAcceess.equals(false))
            System.out.println(ElementRepositoryLibrary.getElementValue() + " is disabled");
        else
            objElementOperation.dropdownSelectListner(qdeDriver, ElementRepositoryLibrary.getLocator(), ElementRepositoryLibrary.getElementValue(), field[0][j-1]);
        break;

    case "Button":
        ElementOperation.checkElementState(qdeDriver, ElementRepositoryLibrary.getLocator(), ElementRepositoryLibrary.getElementValue());

        if(ElementOperation.ElementAcceess.equals(false)) {
            System.out.println(ElementRepositoryLibrary.getElementValue() + " is disabled");
            break loop;
        }
        else if(field[0][j-1].equals(""))
            System.out.println("Checking for Null value");
        else if(field[0][j-1].equals("Yes") && ElementRepositoryLibrary.getFieldName().equals("QR Scanner"))
            objElementOperation.buttonClickListner(qdeDriver, ElementRepositoryLibrary.getLocator(), ElementRepositoryLibrary.getElementValue());
        else if(ElementRepositoryLibrary.getFieldName().contains("Capture Document"))
            objElementOperation.captureDocument(qdeDriver, ElementRepositoryLibrary.getLocator(), ElementRepositoryLibrary.getElementValue());
            break;

    default :
        objElementOperation.textboxSetListner(qdeDriver, ElementRepositoryLibrary.getElementType(), ElementRepositoryLibrary.getLocator(), 
                ElementRepositoryLibrary.getElementValue(), field[0][j-1]);
        break;
    }   
}

问题:在填写了几个(比如7个)字段之后,它给了我NoSuchElementException,因为我必须在屏幕上滚动才能移动到下一个字段(它就像:屏幕包含7个字段&amp;你必须滚动查看下面的字段和automator在屏幕中查看之前也不会识别该元素。

我曾尝试过,我确实捕获了NoSuchElementException并执行了Scroll操作。但这不是正确的方法,因为如果搜索到的元素实际上不存在,那么它也会捕获NoSuchElementException并执行滚动操作。

建议一些消除此问题的好方法。如果需要任何细节,请告诉我。

1 个答案:

答案 0 :(得分:0)

据我所知,代码工作正常,所以我要做的就是完成这个测试:

  1. (正如您所做的那样)按下拉列表并搜索该项目 - 在这种情况下,您确实忽略了NoSuchElementException。
  2. 保存最后一个可见项目的名称(如果您需要任何有关代码段的帮助,请告诉我们)
  3. 再次执行滚动并搜索项目 - &gt;再次保存最后一项。
  4. 经过几次迭代后,最后一项将保持不变 - &gt;这意味着我们位于列表的末尾,在这种情况下,您未通过测试。