Appium [iOS 本机应用程序] - 如何使用 Java 滚动到特定的 element/object?
Appium [ iOS Native app ] - How to Scroll to a specific element/object using Java?
我想滚动到当前在屏幕上不可见但位于页面某处的特定元素,为此我必须向下滚动。所以 dr.scrollTo()
不起作用,我试过 jsExecutor.executeScript("mobile: scroll", scrollObject)
也不起作用。那么有什么想法吗?
如果可能我希望它是通用的,这样它既可以向上搜索也可以向下搜索对象位置不确定的地方。
原始 appium 解决方案:https://www.youtube.com/watch?v=Z228YKNBrgM
作为解决方法,您可以 scroll/swipe 直到元素 displayed/enabled/clickable 为 iOS,或者仅存在 Android
解决方案是一种变通方法。对此没有确切的功能。
首先让我们收集要求-
滚动页面(范围从 - [当前页面位置,页面结束])直到给定元素可见。
对于滚动我们可以使用-
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]
这就完成了你的条件。我想这应该可以!
我想滚动到当前在屏幕上不可见但位于页面某处的特定元素,为此我必须向下滚动。所以 dr.scrollTo()
不起作用,我试过 jsExecutor.executeScript("mobile: scroll", scrollObject)
也不起作用。那么有什么想法吗?
如果可能我希望它是通用的,这样它既可以向上搜索也可以向下搜索对象位置不确定的地方。
原始 appium 解决方案:https://www.youtube.com/watch?v=Z228YKNBrgM
作为解决方法,您可以 scroll/swipe 直到元素 displayed/enabled/clickable 为 iOS,或者仅存在 Android
解决方案是一种变通方法。对此没有确切的功能。 首先让我们收集要求- 滚动页面(范围从 - [当前页面位置,页面结束])直到给定元素可见。
对于滚动我们可以使用-
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]
这就完成了你的条件。我想这应该可以!