我有一个UI滑块组件。在点击旋钮时,我可以左右拖动滑块。我需要在手机上测试这个功能。我正在使用iOS和android模拟器使用saucelabs。
我尝试了下面的代码:
slider = appium.findElement(By.id("numInput"));
int xStart = slider.getLocation().getX();
int yStart = slider.getLocation().getY();
int end= xStart + slider.getSize().getWidth();
System.out.println(slider.getAttribute("aria-valuenow"));
TouchAction action = new TouchAction(appium);
int moveTo=(int)(end*0.1);
action.longPress(xStart,yStart).moveTo(moveTo,yStart).perform();
System.out.println(slider.getAttribute("aria-valuenow"));
但是遇到一个错误:org.openqa.selenium.WebDriverException:方法未实现。在line: action.longPress(xStart,yStart).moveTo(moveTo,yStart).perform();
然后我做了一些研究,发现我需要切换到Native_App来让它工作
但是当我切换到Native App:
slider = appium.findElement(By.id("numInput"));
int xStart = slider.getLocation().getX();
int yStart = slider.getLocation().getY();
int end= xStart + slider.getSize().getWidth();
System.out.println(slider.getAttribute("aria-valuenow"));//slider val
String originalContext = appium.getContext();
appium.context("NATIVE_APP");
TouchAction action = new TouchAction(appium);
int moveTo=(int)(end*0.1);
action.longPress(xStart,yStart).moveTo(moveTo,yStart).perform();
System.out.println(slider.getAttribute("aria-valuenow"));
另一个错误:System.out.println(slider.getAttribute("aria-valuenow"));nosuchelementexception:使用给定的搜索参数无法在页面上找到元素。
滑动条也不移动
功能:
caps.setCapability(MobileCapabilityType.DEVICE_NAME,iPhone 6 Plus Simulator);
caps.setCapability(MobileCapabilityType.PLATFORM_VERSION, 9.3);
caps.setCapability(MobileCapabilityType.BROWSER_NAME,Safari);
caps.setCapability(MobileCapabilityType.APPIUM_VERSION, 1.5.3)
if (appiumDriver.equalsIgnoreCase("iOS")) {
appium = new IOSDriver(new URL(URL), caps);
} else if (appiumDriver.equalsIgnoreCase("android")) {
appium = new AndroidDriver(new URL(URL), caps);
}
可以使用swipe方法代替TouchAction。
driver.swipe(startx, starty, endx, starty, 500);
下面的代码是为我工作,你可以给它一个尝试,触摸快捷键实际上做魔术在这里
((TouchShortcuts)驱动程序)。