使用 BroswerStack(Android 设备)使用 Appium 测试移动本机应用程序,当尝试执行 swipeGesture 来执行向上滑动时,它会抛出 UnsupportedCommandException(请参见下文)。顺便说一句,它正在使用真实设备或模拟器在本地执行中工作。
org.openqa.selenium.UnsupportedCommandException: Unknown mobile command "swipeGesture".
Only shell,scrollBackTo,viewportScreenshot,deepLink,startLogsBroadcast,stopLogsBroadcast,
acceptAlert,dismissAlert,batteryInfo,deviceInfo,changePermissions,getPermissions,
performEditorAction,startScreenStreaming,stopScreenStreaming,getNotifications,listSms,
type commands are supported.
我的代码如下
((JavascriptExecutor) driver).executeScript("mobile: swipeGesture", Map.of(
"left", location.x, "top", location.y - swipeBoxHigh,
"width", 100, "height", swipeBoxHigh,
"direction", "up",
"percent", 1,
"speed", 1500
));
知道为什么我在 browserStack 中遇到此异常吗?
有什么建议如何使用 browserStack 在 android 中执行滑动手势吗?
您可以参考:https://www.browserstack.com/docs/app-automate/appium/advanced-features/appium-gestures在BrowserStack上使用滑动手势。
此外,尝试使用不同的 Appium 版本,包括您在本地运行测试所使用的版本。从以下位置获取帮助:https://www.browserstack.com/app-automate/capability
public void swipeLeft(WebElement 元素) { // 获取元素的尺寸和坐标 int startX = element.getLocation().getX() + (int) (element.getSize().width * 0.8); // 距左侧 80% int endX = element.getLocation().getX() + (int) (element.getSize().width * 0.2); // 距左侧 20% int y = element.getLocation().getY() + (element.getSize().height / 2); // 元素的中心 Y // 为手势定义一个PointerInput PointerInput 手指 = new PointerInput(PointerInput.Kind.TOUCH, "手指"); 序列滑动 = new Sequence(finger, 1); // 移动到起始位置 swipe.addAction(finger.createPointerMove(Duration.ofMillis(0), PointerInput.Origin.viewport(), startX, y)); // 按下去 swipe.addAction(finger.createPointerDown(PointerInput.MouseButton.LEFT.asArg())); // 移动到结束位置 swipe.addAction(finger.createPointerMove(Duration.ofMillis(600), PointerInput.Origin.viewport(), endX, y)); // 发布 swipe.addAction(finger.createPointerUp(PointerInput.MouseButton.LEFT.asArg())); // 执行滑动操作 driver.perform(Arrays.asList(swipe)); }