1

我想滚动到当前在屏幕上不可见但它位于页面某处的特定元素,为此我必须向下滚动。所以dr.scrollTo()不工作,我试过jsExecutor.executeScript("mobile: scroll", scrollObject)哪个也不工作。那么有什么想法吗?

如果可能的话,我希望它是通用的,这样它就可以在对象位置不确定的地方向上和向下搜索。

4

2 回答 2

0

原appium解决方案:https ://www.youtube.com/watch?v=Z228YKNBrgM

作为一种解决方法,您可以滚动/滑动直到元素在 iOS 上显示/启用/可点击,或者在 Android 上仅存在

于 2016-03-31T08:52:06.663 回答
0

解决方案是一种变通方法。对此没有确切的功能。首先让我们收集需求-滚动页面(范围从-[当前页面位置,页面结束])直到给定元素可见。

对于滚动,我们可以使用 -

driver.swipe(startx, starty, startx, endy, 1000);

为了找到元素可见性,我们可以使用如下代码 -

 try {
            dr.findElement(By.xpath(xpath); // find element with whatever Selector, I am using xpath
            if (dr.findElementsByXPath(xpath).size()>0 && dr.findElement(By.xpath(xpath)).isDisplayed()){
                System.out.println("Element found by xpath : " + xpath);
                return true;
            } else
                return false;
        } catch (NoSuchElementException e1) {
            System.out.println("Object not found");
            return false;
        } catch (Exception e2) {
            System.out.println("Unhandled Exception found");
            e2.printStackTrace();
            throw e2;
        }

现在我们必须设置一个条件,如果最后一个元素可见,则滚动应该停止。为此,我们可以修改当前元素的 xpath,并检查该 xpath 找到的元素的可见性,例如 -

String xpath_last = elementxpath.concat("/../*[last()]");  // if we are scrolling downwards then [last()]. But if we are scrolling up then make it [1]

这完成了你的条件。我想这应该做!

于 2016-08-29T06:50:52.750 回答