无法在IOS WebView中使用JavaScript Executor执行滑动或滚动

时间:2017-06-14 19:01:31

标签: java selenium-webdriver appium-ios

我们正在尝试自动化我们需要执行滚动操作的场景,但是滑动& JavaScriptExecutor不起作用,我们的问题有一点背景,被测试的应用程序是一个混合应用程序(本机和webview都可用),我们正在使用IOS_Webkit_Debug_Proxy来启用web_view。 (我们不使用本机元素,因为我们的应用程序完全基于webview构建)

尝试了几种方法,例如将web_view切换为本机,反之亦然,但在这两种情况下,使用JavaScript Executor的driver.swipe方法或滚动应用程序都无效。

DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(MobileCapabilityType.PLATFORM_NAME, 
configuration.getProperty(MobileCapabilityType.PLATFORM_NAME));
capabilities.setCapability(MobileCapabilityType.PLATFORM_VERSION, configuration.getProperty(MobileCapabilityType.PLATFORM_VERSION));
capabilities.setCapability(MobileCapabilityType.DEVICE_NAME,configuration.getProperty(MobileCapabilityType.DEVICE_NAME));
capabilities.setCapability(MobileCapabilityType.UDID, configuration.getProperty(Constants.UDID));capabilities.setCapability(MobileCapabilityType.NEW_COMMAND_TIMEOUT,8000); 
capabilities.setCapability(MobileCapabilityType.APP, System.getProperty("user.dir") + configuration.getProperty(Constants.APP_IOS));    
capabilities.setCapability(MobileCapabilityType.AUTOMATION_NAME, AutomationName.IOS_XCUI_TEST);
capabilities.setCapability(MobileCapabilityType.AUTO_WEBVIEW, true);
capabilities.setCapability("autoAcceptAlerts", true);   
String urlString = new 
StringBuffer(configuration.getProperty(Constants.PROTOCOL)).append("://".append(configuration.getProperty(Constants.HOST_NAME)).append(":").append(configuration.getProperty(Constants.PORT)).append("/wd/hub").toString(); 
driver = new IOSDriver(new URL(urlString), capabilities);
driver.manage().timeouts().implicitlyWait(Constants.TIMEOUT_IN_SECONDS,TimeUnit.SECONDS);'


JavaClient: 4.1.2
Appium: 1.6.4
IOS_Webkit_Debug_Proxy
IOS version: 10.2

xCode:8.3.2 物理设备 如果您需要更多详细信息,请告诉我们,我们正处于项目的中间,我们需要解决方案或解决方法才能开始。

1 个答案:

答案 0 :(得分:0)

您是否尝试过使用java客户端的TouchAction类。

这可能会帮助你:

public void swipeWithTouch(){

    TouchAction action = new TouchAction((MobileDriver)driver);
    action.longPress(fromX, fromY).moveTo(toX, toY).release().perform();
}