下面的代码正在滚动到结束,但我不想滚动直到结束 我想滚动一些特定的位置:
driver.findElementByXPath("//*[@value='UpcomingInstallations']").click();
JavascriptExecutor js = (JavascriptExecutor) driver;
HashMap<String, String> scrollObject = new HashMap<String, String>();
scrollObject.put("direction", "down");
js.executeScript("mobile: scroll", scrollObject);
答案 0 :(得分:1)
我这样做的方法是在屏幕上查找元素(https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/WebElement.html#isDisplayed--),如果我没有看到它,请滑动。
while (!displayed)
swipe
我建议您查看TouchAction类以进行滑动:https://appium.github.io/java-client/io/appium/java_client/TouchAction.html。滑动的首选方法如下:
myTouchAction.press(startX,startY).moveTo(endX,endY).release().perform()
由于设备之间的像素可能不同,因此您需要使用基于总屏幕尺寸百分比的坐标。有关详细信息,请参阅https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/WebDriver.Window.html#getSize--。
答案 1 :(得分:0)
您的滚动代码是正确的,您还需要指定元素名称属性值,下面是它在Appium 1.7中的代码: -
JavascriptExecutor js = (JavascriptExecutor) driver;
HashMap scrollObject = new HashMap();
scrollObject.put("direction", "down");
scrollObject.put("name", "object name value");
js.executeScript("mobile: scroll", scrollObject);
答案 2 :(得分:0)
driver.findElementByXPath("//*[@value='UpcomingInstallations']").click();
JavascriptExecutor js = (JavascriptExecutor) driver;
HashMap scrollObject = new HashMap();
scrollObject.put("direction", "down");
js.executeScript("mobile: scroll", scrollObject);
这肯定有效。
答案 3 :(得分:0)
在我的情况下(使用Java),我对一个简单的UIListView执行了此操作,并且由于不赞成使用driver.swipe方法,因此该功能在Appium-mac-1.15.0-1中有效:
你去了
public static void scrollDownIos(IOSDriver<IOSElement> driver, double scrollPercentageStart, double scrollPercentageEnd)
{
Dimension size = driver.manage().window().getSize();
int x = size.getWidth()/2;
int starty = (int) (size.getHeight() * scrollPercentageStart);
int endy = (int) (size.getHeight() * scrollPercentageEnd);
(new TouchAction(driver)).press(PointOption.point(x, starty))
.waitAction(WaitOptions.waitOptions(Duration.ofMillis(2000)))
.moveTo(PointOption.point(x, endy))
.release()
.perform();
}
答案 4 :(得分:0)
在滚动对象中,只给出一个定位器值。您的定位器可以是任何可用的,例如:ID,名称,xpath或其他一些可用的。
JavascriptExecutor js = (JavascriptExecutor) driver;
HashMap<String, String> scrollObject = new HashMap<String, String>();
scrollObject.put("direction", "down");
scrollObject.put("xpath", "<your xpath value>");
js.executeScript("mobile: scroll", scrollObject);