Android java.lang.SecurityException:禁止adb清除用户数据;;代码:';1';

Android java.lang.SecurityException:禁止adb清除用户数据;;代码:';1';,android,selenium,appium,appium-android,Android,Selenium,Appium,Appium Android,我遇到了这个错误: java.lang.SecurityException:禁止adb清除用户数据。“;代码:“1” 在Android8.1.0(oreo)的appium服务器上运行下面提到的代码时,同样的代码在Android5.1(棒棒糖)中运行良好。USB调试已在mobile中启动。有人知道我为什么会犯这个错误吗` package appium; @BeforeTest public void setcapbilities() throws Exception {

我遇到了这个错误:

java.lang.SecurityException:禁止adb清除用户数据。“;代码:“1”

Android8.1.0(oreo)
appium
服务器上运行下面提到的代码时,同样的代码在
Android5.1(棒棒糖)
中运行良好。USB调试已在mobile中启动。有人知道我为什么会犯这个错误吗`

package appium;
@BeforeTest

        public void setcapbilities() throws Exception
{

    DesiredCapabilities cap = new DesiredCapabilities();
    cap.setCapability("deviceName","Vipul");
    cap.setCapability(CapabilityType.VERSION,"8.1");
    cap.setCapability("platformName","Android");
    cap.setCapability("appPackage","com.android.calculator2");
    cap.setCapability("appActivity","com.android.calculator2.Calculator");
    driver = new RemoteWebDriver(new URL("http://127.0.0.1:4723/wd/hub"),cap);
    driver.manage().timeouts().implicitlyWait(5,TimeUnit.SECONDS);
}

@Test
public void  firstt()
{
    driver.findElement(By.xpath("//android.widget.Button")).click();
    driver.findElement(By.xpath("7")).click();
    driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
}

@AfterTest
public void kill()
{
    driver.manage().timeouts().implicitlyWait(5,TimeUnit.SECONDS);
    driver.quit();
}

你可以尝试解决你所面临的问题

首先,使用可用的最新稳定的Appium服务器和Java客户端

其次,使用
AndroidDriver
而不是
RemoteWebDriver
。由于AndroidDriver通过AppiumDriver扩展了RemoteWebDriver,因此它必须覆盖
quit
方法功能

第三,你不需要到处调用隐式等待。您必须在设置方法中调用它一次


第四,将您的Android SDK和工具更新为最新版本。

如果某个东西在和IDV5中工作,那么它也应该在Android v8上工作,这是不必要的

原因

为了使设备更加安全,最新的android版本对一些已经在使用的API施加了限制

e、 g.您可以在移动设备中使用Appium API启用飞行模式,直到Android V6,从Android V7开始,此API被阻止

解决方案

看看您的代码,似乎会话应该成功创建,您需要注意的唯一一件事是如何使测试成功。可能您需要根据Android V8的UI更改Xpath

您是否尝试在APPIUM Desktop中检查此Xpath


您在哪个设备上运行此操作?