当前位置: 首页 > 知识库问答 >
问题:

Appium:如何使用Java在iOS应用程序中向下滚动

璩正志
2023-03-14

我的目标是在下拉列表中向下滚动,直到用户可以看到TN等状态。当scrollTo()方法工作时,这在Appium中是可能的,但在当前的Appium构建中,它们被弃用。我试过驾驶。但是什么也没发生。我不太熟悉iOS谓词,但也尝试过使用它们。

到目前为止,替代方案已经尝试过,但都没有奏效:

#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个答案

白子默
2023-03-14

在我的例子中,我对一个简单的UIListView执行了这项操作,并且从驱动程序开始,它就适用于这个目的。不推荐使用滑动方法:

好了

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();
}
莫河
2023-03-14

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

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

MobileElement state = driver.findElementByIosUIAutomation(path);
state.tap(1, 1);
胡劲
2023-03-14

你能试试这个吗?

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

确保定位器uiAutoLocator产生一个元素。

 类似资料:
  • 我使用了下面的方法,但它在方法上显示了错误。此方法在驱动程序类中不可用。因此,请建议是否有其他方法可以滚动到iOS Appium v1。7.2。

  • 我正在自动化混合应用程序。我想点击在页面上看不到的注销,因此我需要向下滚动来点击它。我正在尝试下面的代码,但它不起作用,我正在使用Java client 5.0.4 Appium server 1.7.2和selenium 3.9.1以及Java jdk版本1.8.0_161。谁能帮忙吗

  • 我正在尝试用Java向下滚动APK页面。我正在使用Appium和Selenium。 我试过: 和

  • 我正在Android应用程序上进行自动化测试,需要滚动才能看到需要滚动的字段 我尝试从这里使用以下代码: 运行此代码后,会出现以下错误: 嗯,我知道我已经通过了中的驱动程序,该驱动程序的类型是。 我该怎么解决这个问题?

  • 当我尝试在ios应用程序中执行刷卡操作时,它会显示此错误。 [org.openqa.selenium.未知命令,除滚动之外的所有移动命令都已删除。(警告:服务器没有提供任何stackTrack信息)。] 请给我答案。

  • 我想知道如何向下滚动点击元素在Android使用appium和java? 我在“”中有一个元素列表。由于它有10多个元素,我们需要滑动屏幕以查看以下元素。每个元素都有相同的id,即“”。但他们的文本不同,比如“苹果”、“橘子”、“葡萄”。。。。。。 所有我需要的是滚动并使用其文本单击相关元素(苹果,橙色,葡萄......) 我已经学习了很多教程,但都做不好。我已设法向下滚动屏幕。但当元素位于卷轴的