【问题标题】:Appium - Real Me 3 Pro Device :Getting java.lang.securityexception adb clearing user data is forbiddenAppium - Real Me 3 Pro 设备:禁止获取 java.lang.securityexception adb 清除用户数据
【发布时间】:2021-04-04 10:10:27
【问题描述】:

我是 Appium 的新手,在我的设备“Real me 3 Pro”上启动 chrome 浏览器时,我遇到了 chrome 异常:

java.lang.SecurityException: adb 清除用户数据被禁止。

请查看以下详细信息: Appium 版本:1.19.1 安卓版本:10 电话:Real me 3 pro 注意:我已经在设置中启用了禁用权限监控。

PFB:

Java 代码:

baseChrome.java

package Appium.tutorial;

import java.io.File;
import java.net.URL;

import org.openqa.selenium.remote.DesiredCapabilities;

import io.appium.java_client.android.AndroidDriver;
import io.appium.java_client.android.AndroidElement;
import io.appium.java_client.remote.MobileCapabilityType;

public class baseChrome {
    
    public static AndroidDriver<AndroidElement> Capabilities(String device) throws Exception {
        
        /*File file = new File("src/test/java");
          File fs = new File(file, "ApiDemos-debug.apk");   */
          
          
          DesiredCapabilities Cap = new DesiredCapabilities();
          if(device.equalsIgnoreCase("emulator")) {
              Cap.setCapability(MobileCapabilityType.DEVICE_NAME, "Pixel2HemantEmulator");
              Cap.setCapability(MobileCapabilityType.BROWSER_NAME, "Chrome");
              Cap.setCapability("noReset",true);
          }
          else if(device.equalsIgnoreCase("real")) {
              Cap.setCapability(MobileCapabilityType.DEVICE_NAME, "Android Device");
              Cap.setCapability(MobileCapabilityType.BROWSER_NAME, "Chrome");
              Cap.setCapability("noReset",true);
          }
        // 
         
          Cap.setCapability(MobileCapabilityType.AUTOMATION_NAME,"uiautomator2");
        //  Cap.setCapability(MobileCapabilityType.APP, fs.getAbsolutePath());
          AndroidDriver<AndroidElement> driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), Cap);
          return driver;
    }

}

Launchchrome.java

package Appium.tutorial;

import io.appium.java_client.android.AndroidDriver;
import io.appium.java_client.android.AndroidElement;

public class launchChrome extends baseChrome{

    public static void main(String[] args) throws Exception {
        // TODO Auto-generated method stub
        AndroidDriver<AndroidElement> driver = Capabilities("real");
        driver.get("https://timesofindia.indiatimes.com/");

    }

}

Eclipse 日志:

================================================ ======================

Exception in thread "main" org.openqa.selenium.SessionNotCreatedException: Unable to create a new remote session. Please check the server log for more details. Original error: An unknown server-side error occurred while processing the command. Original error: An unknown server-side error occurred while processing the command. Original error: unknown error: Failed to clear data for com.android.chrome on device bc4ff854: Security exception: adb clearing user data is forbidden.

java.lang.SecurityException: adb clearing user data is forbidden.
    at com.android.server.pm.ColorClearDataProtectManager.interceptClearUserDataIfNeeded(ColorClearDataProtectManager.java:88)
    at com.android.server.pm.OppoBasePackageManagerService$OppoPackageManagerInternalImpl.interceptClearUserDataIfNeeded(OppoBasePackageManagerService.java:721)
    at com.android.server.am.ActivityManagerService.clearApplicationUserData(ActivityManagerService.java:4463)
    at com.android.server.pm.PackageManagerShellCommand.runClear(PackageManagerShellCommand.java:1837)
    at com.android.server.pm.PackageManagerShellCommand.onCommand(PackageManagerShellCommand.java:212)
    at android.os.ShellCommand.exec(ShellCommand.java:104)
    at com.android.server.pm.PackageManagerService.onShellCommand(PackageManagerService.java:24009)
    at android.os.Binder.shellCommand(Binder.java:881)
    at android.os.Binder.onTransact(Binder.java:765)
    at android.content.pm.IPackageManager$Stub.onTransact(IPackageManager.java:5100)
    at com.android.server.pm.PackageManagerService.onTransact(PackageManagerService.java:4791)
    at com.android.server.pm.OppoPackageManagerService.onTransact(OppoPackageManagerService.java:83)
    at android.os.Binder.execTransactInternal(Binder.java:1021)
    at android.os.Binder.execTransact(Binder.java:994)

Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:17:03'
System info: host: 'HEMANTV', ip: '192.168.43.86', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '11.0.9'
Driver info: driver.version: AndroidDriver
remote stacktrace: UnknownError: An unknown server-side error occurred while processing the command. Original error: An unknown server-side error occurred while processing the command. Original error: unknown error: Failed to clear data for com.android.chrome on device bc4ff854: Security exception: adb clearing user data is forbidden.

java.lang.SecurityException: adb clearing user data is forbidden.
    at com.android.server.pm.ColorClearDataProtectManager.interceptClearUserDataIfNeeded(ColorClearDataProtectManager.java:88)
    at com.android.server.pm.OppoBasePackageManagerService$OppoPackageManagerInternalImpl.interceptClearUserDataIfNeeded(OppoBasePackageManagerService.java:721)
    at com.android.server.am.ActivityManagerService.clearApplicationUserData(ActivityManagerService.java:4463)
    at com.android.server.pm.PackageManagerShellCommand.runClear(PackageManagerShellCommand.java:1837)
    at com.android.server.pm.PackageManagerShellCommand.onCommand(PackageManagerShellCommand.java:212)
    at android.os.ShellCommand.exec(ShellCommand.java:104)
    at com.android.server.pm.PackageManagerService.onShellCommand(PackageManagerService.java:24009)
    at android.os.Binder.shellCommand(Binder.java:881)
    at android.os.Binder.onTransact(Binder.java:765)
    at android.content.pm.IPackageManager$Stub.onTransact(IPackageManager.java:5100)
    at com.android.server.pm.PackageManagerService.onTransact(PackageManagerService.java:4791)
    at com.android.server.pm.OppoPackageManagerService.onTransact(OppoPackageManagerService.java:83)
    at android.os.Binder.execTransactInternal(Binder.java:1021)
    at android.os.Binder.execTransact(Binder.java:994)

    at getResponseForW3CError (C:\Users\ACER\AppData\Roaming\npm\node_modules\appium\node_modules\appium-base-driver\lib\protocol\errors.js:804:9)
    at asyncHandler (C:\Users\ACER\AppData\Roaming\npm\node_modules\appium\node_modules\appium-base-driver\lib\protocol\protocol.js:384:37)
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:17:03'
System info: host: 'HEMANTV', ip: '192.168.43.86', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '11.0.9'
Driver info: driver.version: AndroidDriver
    at io.appium.java_client.remote.AppiumCommandExecutor$1.createSession(AppiumCommandExecutor.java:216)
    at io.appium.java_client.remote.AppiumCommandExecutor.createSession(AppiumCommandExecutor.java:225)
    at io.appium.java_client.remote.AppiumCommandExecutor.execute(AppiumCommandExecutor.java:247)
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:552)
    at io.appium.java_client.DefaultGenericMobileDriver.execute(DefaultGenericMobileDriver.java:41)
    at io.appium.java_client.AppiumDriver.execute(AppiumDriver.java:1)
    at io.appium.java_client.android.AndroidDriver.execute(AndroidDriver.java:1)
    at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:213)
    at io.appium.java_client.AppiumDriver.startSession(AppiumDriver.java:338)
    at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:131)
    at io.appium.java_client.DefaultGenericMobileDriver.<init>(DefaultGenericMobileDriver.java:37)
    at io.appium.java_client.AppiumDriver.<init>(AppiumDriver.java:89)
    at io.appium.java_client.AppiumDriver.<init>(AppiumDriver.java:99)
    at io.appium.java_client.android.AndroidDriver.<init>(AndroidDriver.java:96)
    at Appium.tutorial.baseChrome.Capabilities(baseChrome.java:35)
    at Appium.tutorial.launchChrome.main(launchChrome.java:10)
Caused by: java.lang.reflect.InvocationTargetException
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at io.appium.java_client.remote.AppiumCommandExecutor$1.createSession(AppiumCommandExecutor.java:193)
    ... 15 more
Caused by: org.openqa.selenium.WebDriverException: An unknown server-side error occurred while processing the command. Original error: An unknown server-side error occurred while processing the command. Original error: unknown error: Failed to clear data for com.android.chrome on device bc4ff854: Security exception: adb clearing user data is forbidden.

java.lang.SecurityException: adb clearing user data is forbidden.
    at com.android.server.pm.ColorClearDataProtectManager.interceptClearUserDataIfNeeded(ColorClearDataProtectManager.java:88)
    at com.android.server.pm.OppoBasePackageManagerService$OppoPackageManagerInternalImpl.interceptClearUserDataIfNeeded(OppoBasePackageManagerService.java:721)
    at com.android.server.am.ActivityManagerService.clearApplicationUserData(ActivityManagerService.java:4463)
    at com.android.server.pm.PackageManagerShellCommand.runClear(PackageManagerShellCommand.java:1837)
    at com.android.server.pm.PackageManagerShellCommand.onCommand(PackageManagerShellCommand.java:212)
    at android.os.ShellCommand.exec(ShellCommand.java:104)
    at com.android.server.pm.PackageManagerService.onShellCommand(PackageManagerService.java:24009)
    at android.os.Binder.shellCommand(Binder.java:881)
    at android.os.Binder.onTransact(Binder.java:765)
    at android.content.pm.IPackageManager$Stub.onTransact(IPackageManager.java:5100)
    at com.android.server.pm.PackageManagerService.onTransact(PackageManagerService.java:4791)
    at com.android.server.pm.OppoPackageManagerService.onTransact(OppoPackageManagerService.java:83)
    at android.os.Binder.execTransactInternal(Binder.java:1021)
    at android.os.Binder.execTransact(Binder.java:994)

Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:17:03'
System info: host: 'HEMANTV', ip: '192.168.43.86', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '11.0.9'
Driver info: driver.version: AndroidDriver
remote stacktrace: UnknownError: An unknown server-side error occurred while processing the command. Original error: An unknown server-side error occurred while processing the command. Original error: unknown error: Failed to clear data for com.android.chrome on device bc4ff854: Security exception: adb clearing user data is forbidden.

java.lang.SecurityException: adb clearing user data is forbidden.
    at com.android.server.pm.ColorClearDataProtectManager.interceptClearUserDataIfNeeded(ColorClearDataProtectManager.java:88)
    at com.android.server.pm.OppoBasePackageManagerService$OppoPackageManagerInternalImpl.interceptClearUserDataIfNeeded(OppoBasePackageManagerService.java:721)
    at com.android.server.am.ActivityManagerService.clearApplicationUserData(ActivityManagerService.java:4463)
    at com.android.server.pm.PackageManagerShellCommand.runClear(PackageManagerShellCommand.java:1837)
    at com.android.server.pm.PackageManagerShellCommand.onCommand(PackageManagerShellCommand.java:212)
    at android.os.ShellCommand.exec(ShellCommand.java:104)
    at com.android.server.pm.PackageManagerService.onShellCommand(PackageManagerService.java:24009)
    at android.os.Binder.shellCommand(Binder.java:881)
    at android.os.Binder.onTransact(Binder.java:765)
    at android.content.pm.IPackageManager$Stub.onTransact(IPackageManager.java:5100)
    at com.android.server.pm.PackageManagerService.onTransact(PackageManagerService.java:4791)
    at com.android.server.pm.OppoPackageManagerService.onTransact(OppoPackageManagerService.java:83)
    at android.os.Binder.execTransactInternal(Binder.java:1021)
    at android.os.Binder.execTransact(Binder.java:994)

    at getResponseForW3CError (C:\Users\ACER\AppData\Roaming\npm\node_modules\appium\node_modules\appium-base-driver\lib\protocol\errors.js:804:9)
    at asyncHandler (C:\Users\ACER\AppData\Roaming\npm\node_modules\appium\node_modules\appium-base-driver\lib\protocol\protocol.js:384:37)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
    at org.openqa.selenium.remote.W3CHandshakeResponse.lambda$errorHandler$0(W3CHandshakeResponse.java:62)
    at org.openqa.selenium.remote.HandshakeResponse.lambda$getResponseFunction$0(HandshakeResponse.java:30)
    at org.openqa.selenium.remote.ProtocolHandshake.lambda$createSession$0(ProtocolHandshake.java:126)
    at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
    at java.base/java.util.Spliterators$ArraySpliterator.tryAdvance(Spliterators.java:958)
    at java.base/java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:127)
    at java.base/java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:502)
    at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:488)
    at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
    at java.base/java.util.stream.FindOps$FindOp.evaluateSequential(FindOps.java:150)
    at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.base/java.util.stream.ReferencePipeline.findFirst(ReferencePipeline.java:543)
    at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:128)
    ... 20 more

【问题讨论】:

    标签: java android automation appium


    【解决方案1】:

    不是Appium故障,根本原因是设备不允许清理adb命令。

    首先要尝试删除行Cap.setCapability("noReset",true);

    如果问题仍然存在,请尝试其他设备。 如果要在这台设备上运行,需要探索如何使用额外的选项启动chrome,可以查看更多详情here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-14
      • 2015-02-11
      • 2015-04-17
      • 2020-07-09
      • 2014-09-07
      • 1970-01-01
      • 2011-03-30
      • 2014-02-01
      相关资源
      最近更新 更多