我正在尝试使用Appium自动化本机android应用程序。我使用相同的Java客户端。以下是我包含的依赖项。由于我正在使用Java客户端的版本7,因此不支持滚动和滑动方法。所以或者我如何滚动到一个特定的元素?我使用TouchAction类遇到了一些代码片段,但我只想知道TouchAction类之外是否还有其他解决方案? Maven依赖-
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.8</version>
</dependency>
<dependency>
<groupId>io.appium</groupId>
<artifactId>java-client</artifactId>
<version>7.0.0</version>
</dependency>
答案 0 :(得分:2)
您可以将 findElementByAndroidUIAutomator 用于不同的条件,例如文本,说明:
<!DOCTYPE html>
<html>
<head>
<title>Index</title>
</head>
<body>
<img src="{{f}}" alt="f">
</body>
</html>
答案 1 :(得分:0)
public MobileElement scrollElementByTextUsingDescription(String scrollableListContDesc, String uiClassSelector, String text) {
return driver.findElement(MobileBy.AndroidUIAutomator(
"new UiScrollable(new UiSelector().description(\"" + scrollableList + "\"))" +
".getChildByText(new UiSelector().className(\"" + uiClassSelector + "\"), \"" + text + "\")"));
}
scrollableListContDesc 是automationId / cont-可滚动列表的说明
uiClassSelector 是可滚动列表的类名,例如android.view.View
文本是要滚动到的元素的文本。
如果滚动列表中没有续描述,则可以使用以下方法:
public MobileElement scrollElementByTextUsingId(String scrollableListId, String uiClassSelector, String text) {
return driver.findElement(MobileBy.AndroidUIAutomator(
"new UiScrollable(new UiSelector().resourceId(\"" + scrollableListId + "\"))" +
".getChildByText(new UiSelector().className(\"" + uiClassSelector + "\"), \"" + text + "\")"));
}
scrollableListId 是可滚动列表的ID /资源ID
答案 2 :(得分:-1)
UIScrollable / UISelector是TouchAction的一种替代方法,可用于滚动/滑动。示例:
MobileElement element = driver.findElement(MobileBy.AndroidUIAutomator(
"new UiScrollable(new UiSelector().resourceId(\"com.android.vending:id/data_view\")).scrollIntoView("
+ "new UiSelector().textContains(\"HelloWorld\").instance(2))"));
This博客文章介绍了多种可很好地滑动/滚动的解决方案。