我的目标是向下滚动下拉菜单,直到用户可以看到TN等状态。当scrollTo()方法正常工作时,这在Appium中是可能的,但在当前的Appium构建中它们已被弃用。我尝试过driver.swipe()但没有任何反应。我对iOS Predicates并不熟悉,但也试过使用它们。
到目前为止尝试的替代品但没有效果:
#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);
答案 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();
}