Appium:如何使用Java

时间:2016-11-09 09:43:31

标签: java ios drop-down-menu scroll appium

我的目标是向下滚动下拉菜单,直到用户可以看到TN等状态。当scrollTo()方法正常工作时,这在Appium中是可能的,但在当前的Appium构建中它们已被弃用。我尝试过driver.swipe()但没有任何反应。我对iOS Predicates并不熟悉,但也试过使用它们。

enter image description here

到目前为止尝试的替代品但没有效果:

#1

MobileElement element = wd.findElementByIosUIAutomation(
                ".tableViews()[0]" + ".scrollToElementWithPredicate(\"name CONTAINS 'TN'\")");
        element.tap(1, 1);

#2:

JavascriptExecutor js = (JavascriptExecutor) wd; HashMap <String, String> scrollObject = new HashMap <String, String>();
scrollObject.put("element", ((RemoteWebElement)
wd.findElementByAccessibilityId("TN")).getId()); js.executeScript(
"mobile: scroll", scrollObject);

3 个答案:

答案 0 :(得分:0)

你能试试吗?

String uiAutoLocator = ".tableViews()[0].firstWithPredicate(\"name CONTAINS 'TN'\")";
driver.executeScript(uiAutoLocator + ".scrollToVisible();");

确保定位器uiAutoLocator产生元素。

答案 1 :(得分:0)

好的我找到了解决方案但考虑到缺乏解决方案很难找到:

String path = "UIATarget.localTarget().frontMostApp().mainWindow().popover().tableViews()[0].cells()[\"TN\"]";
driver.executeScript(path + ".scrollToVisible();");

MobileElement state = driver.findElementByIosUIAutomation(path);
state.tap(1, 1);

答案 2 :(得分:0)

在我的情况下,我对一个简单的UIListView执行了此操作,并且由于不赞成使用driver.swipe方法,因此它适用于此目的:

你去了

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();
}