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

是否可以使用类似于iOS中的AndroidUIAutomator滚动到某个元素?

长孙朝明
2023-03-14

正如标题所示,这是关于在本机iOS应用程序的Appium中滚动。在Android应用程序中,我们使用:

MobileBy.AndroidUIAutomator("new UiScrollable(new UiSelector()" +
     ".scrollable(true)).scrollIntoView(new UiSelector().resourceId(\"" + myVariable +\""));");

这对我们的Android应用程序很有效,我想知道是否有类似的东西可以用于iOS。有可能使用这种方法吗?

MobileBy.iOSClassChain()

我对此没有经验,也没有在留档中找到任何东西告诉我是否有方法使用此方法滚动到一个元素,并在传递给它的字符串中启用或传递它。它只是一种更快的方法来定位元素而不是XPath,还是可以用类似于AndroidUIAutomator的方式来使用?

上面提到的Android方法比我们之前使用的任何touchAction都更可靠、速度更快,因此我也想切换到iOS中类似的方法。

共有2个答案

宰父霖
2023-03-14
 JavascriptExecutor js = (JavascriptExecutor) driver;
 HashMap<String, String> swipeObject = new HashMap<String, String>();
 swipeObject.put("direction", "down"); //up for swipe
 swipeObject.put("startX", "90");
 swipeObject.put("startY", "400");
 swipeObject.put("endX", "90"); //"90");
 swipeObject.put("endY", "350"); //"200");
 swipeObject.put("duration", "2000");
 js.executeScript("mobile: scroll", swipeObject);
蓬琦
2023-03-14

执行受控滚动的推荐最佳实践是使用Appium“mobile:scroll”脚本命令。此命令使用executeScript()方法执行。

RemoteWebElement element = (RemoteWebElement)driver.findElement(By.className("XCUIElementTypeTable"));
String elementID = element.getId();
HashMap<String, String> scrollObject = new HashMap<String, String>();
scrollObject.put("element", elementID); // Only for ‘scroll in element’
scrollObject.put("direction", "down");
driver.executeScript("mobile:scroll", scrollObject);

“元素”:要滚动的元素的id—“元素”必须可滚动。

“方向”:“上”、“下”、“左”、“右”。

有关滚动的更多信息,请查看IOS中的滚动

 类似资料:
  • 问题内容: 我正在尝试将页面移至某个元素。 我尝试下一个代码无济于事: 问题答案: 您可以使用锚点来“聚焦” div。即: 然后使用以下javascript:

  • 我使用以下代码滚动到不可见的元素: 当我使用上述方法进行滚动时,出现以下错误:- 未知命令,除滚动外的所有移动命令都已删除。 在Appium 1.5.0中,名称定位器被删除 在java客户机v4.0.0中,和被弃用。 我使用的是xpath而不是。 什么是移动解决方案:滚动到

  • 问题内容: 我正在考虑将Java用于大型项目,但是我找不到能够在Java中远程表示结构的任何东西。我需要能够将网络数据包转换为可在应用程序中使用的结构/类。 我知道这是可以使用,但这种方式是 不 接受的。因此,我很好奇是否可以像在C语言中那样将一组字节“广播”到一个结构中。如果这不可能,那么我将无法使用Java。 因此,我要问的问题是,是否有可能无需指定对齐方式和数据类型就将任何类型的对齐数据都转

  • 声明函数以映射值并在存在值时使用它们是很方便的。 在您有几个强制对象和几个可选对象的情况下,我发现自己将其他对象包装为可选对象。也可以使用(mandatoryObject),这样我就可以在它们上使用相同的表达式,而不必全部倒写。 但是我不喜欢这个代码: 所以我把它包装起来: 但这是错误的,因为蔬菜(在这个例子中)实际上不是可选的。它们非常重要,我只是给每个人的印象是它们是可选的。 所以我的问题是:

  • 问题内容: 是否可以将类中某个类的实例设置为null。例如,我可以做这样的事情吗 我已经尝试过了,但是行不通。使用“ this = null”,我得到一个错误,即左侧必须是一个变量。有没有办法实现类似的目标? 问题答案: 一个对象的实例不知道哪些引用可能在引用它,因此该对象中的代码无法使这些引用无效。您要的是不可能的(*)。 至少没有添加一堆脚手架来跟踪所有参考,并且以某种方式通知其所有者应该将它

  • 问题内容: 我在一些Apple网站上注意到了这些网站.它们具有使用最近发布的WebKit滚动条CSS的自定义滚动条。但是,我根本无法复制它。有什么想法怎么做?我在这里有一个测试站点,但是我得到了默认的滚动条?谢谢 问题答案: 苹果正在使用以下CSS怪物: