我使用以下代码在iOS设备上滚动屏幕,但它滚动了两次。我在屏幕中有多个同名的元素,但我想滚动到第一个元素。
JavascriptExecutor js = (JavascriptExecutor) driver;
HashMap<String, String> scrollObject = new HashMap<String, String>();
scrollObject.put("direction", "down");
scrollObject.put("xpath", "//XCUIElementTypeStaticText[@name='Max threshold (L/s)']");
js.executeScript("mobile: scroll", scrollObject);
将序列号添加到您的xpath
:
scrollObject.put("xpath", "(//XCUIElementTypeStaticText[@name='Max threshold (L/s)'])[1]");
下面的代码帮助了我,
public void verticalSwipeOnce(double scrollPercentageStart, double scrollPecentageEnd) {
Dimension dim = driver.manage().window().getSize();
int height = dim.getHeight(); int starty = (int) (height * scrollPercentageStart);
int endy = (int) (height * scrollPecentageEnd);
new TouchAction((PerformsTouchActions) (driver)).press(PointOption.point(0, starty)) .waitAction(WaitOptions.waitOptions(Duration.ofMillis(1000))).moveTo(PointOption.point(0, endy)) .release().perform();
}
您可以添加:
params.put("duration","1");
这应该确保它将滚动一次