我试图向下滚动移动应用程序,以便点击屏幕下方的按钮。我使用了下面的触摸动作进行滚动,但它给出了一个例外。还有其他方法吗?任何人请帮我向下滚动移动应用程序。
显示例外
异常在线程"main"org.openqa.selenium.InvalidElementState异常:刷卡没有成功完成
DesiredCapabilities androidCapabilities = new DesiredCapabilities();
AppiumDriver<MobileElement> appiumDriver;
androidCapabilities.setCapability("automationName",PropertyUtility.getProperty("AndroidAutomationName")); androidCapabilities.setCapability("platformName",PropertyUtility.getProperty("AndroidPlatformName"));
androidCapabilities.setCapability("platformVersion", PropertyUtility.getProperty("AndroidPlatformVersion"));
androidCapabilities.setCapability("deviceName", PropertyUtility.getProperty("AndroidDeviceName"));
androidCapabilities.setCapability("app",PropertyUtility.getProperty("AndroidAppPath"));
androidCapabilities.setCapability("noReset", true);
androidCapabilities.setCapability("newCommandTimeout", "60");
appiumDriver = new AndroidDriver<>(new URL("http://0.0.0.0:4723/wd/hub"), androidCapabilities);
Dimension dim=appiumDriver.manage().window().getSize();
System.out.println(dim);
int x=dim.getWidth()/2;
int startY=(int) (dim.getHeight()*(.8));
int endY=(int) (dim.getHeight()*(.2));
TouchAction action=new TouchAction(appiumDriver);
action.press(PointOption.point(x,startY)).waitAction(WaitOptions.waitOptions(Duration.ofMillis(1000))).moveTo(PointOption.point(x, endY)).release().perform();
配置
appium 1.15 java客户端: 7.3.0
您可以执行滚动以查找特定元素,如下所示:
public void scrollToElementByText(String text) {
try {
((AndroidDriver)driver).findElementByAndroidUIAutomator("newUiScrollable(new UiSelector().scrollable(true).instance(0)).scrollIntoView(new UiSelector().text(\"" + text + "\").instance(0))");
} catch (Exception e) {
...
}
}
显然,您可以使用任何属性来查找元素(id、辅助功能id等),然后在该元素上单击()。或者您可以简单地向下滚动并对要显示的元素执行一些检查,如果没有,继续向下滚动:
private void swipe(int xStart, int yStart, int xStop, int yStop) {
try {
new TouchAction(driver)
.press(point(xStart, yStart))
.moveTo(point(xStop, yStop)).release().perform();
} catch (Exception e) {
...
}
}
public void scrollDown() {
swipe(5,
(getWindowSize().getHeight()) - 200,
5,
100);
}
public void scrollToElement(MobileElement el) {
while (true) {
if (!el.isDisplayed()) {
//element is not displayed, keep scrolling
scrollDown();
} else {
//element found
break;
}
}
}
但要小心,因为使用最后一种方法可以得到无限循环(实现自己的逻辑来打破该循环)。
我的目标是在下拉列表中向下滚动,直到用户可以看到TN等状态。当scrollTo()方法工作时,这在Appium中是可能的,但在当前的Appium构建中,它们被弃用。我试过驾驶。但是什么也没发生。我不太熟悉iOS谓词,但也尝试过使用它们。 到目前为止,替代方案已经尝试过,但都没有奏效: #1 #2:
我正在尝试用Java向下滚动APK页面。我正在使用Appium和Selenium。 我试过: 和
我正在Android应用程序上进行自动化测试,需要滚动才能看到需要滚动的字段 我尝试从这里使用以下代码: 运行此代码后,会出现以下错误: 嗯,我知道我已经通过了中的驱动程序,该驱动程序的类型是。 我该怎么解决这个问题?
下面是我的代码: 在从Eclipse IDE运行类时,得到以下错误:
我试图在一个libgdx游戏中实现触摸滚动。我有一个很宽的图像,是一个房间的全景。我希望能够滚动图像,让用户可以看到房间的四周。我有它,所以我可以滚动一定的距离,但当一个新的触摸拖动事件被注册的图像被移回到原来的位置。 这就是我实现它的方式 } 在InputProcessor中 在这个问题LibGdx如何使用OrthographicCamera?滚动的帮助下,我做到了这一步?。然而,这并没有真正解
当用户使用滚动列表时,我实现了显示/隐藏工具栏。现在,我正在使用android应用程序中的显示/隐藏工具栏,用户可以触摸屏幕上的任意位置。我已经尝试过这个代码,它运行良好: 但唯一的问题是工具栏在隐藏或显示时不会出现动画。我希望工具栏在隐藏和显示时向上滑动和向下滑动。