0

请帮我!!!。我正在尝试自动化一个android应用程序。我正在使用 JAVA。如果我从命令行启动 appium 服务器并运行测试用例,它工作正常。但是,当我使用 Appium 桌面客户端(版本 - 1.13.0)启动 appium 服务器时,出现错误。为什么使用 Appium 桌面客户端(版本 - 1.13.0)时测试用例一直失败,而使用 appium 命令行工具运行相同的代码时可以正常工作?

我正在使用Java 8Appium(1.14.0)以及Appium Desktop version(1.13.0)以下 jar 文件

  • Selenium 远程驱动程序-3.14.0
  • Java-client-7.0.0
  • Apache commong 语言文件 - 3.7

    public static AndroidDriver<AndroidElement> InstallInvokeAPK() throws MalformedURLException
    {
    //Define the source folder
    File f1 = new File("src");
    
    //Define the destination and name of the APK file
    File f2 = new File(f1, "New Driver app-excel-debug.apk");
    
        //COnfiguration setting to work with the application
    DesiredCapabilities cap = new DesiredCapabilities();//Creating an object of Desiredcapabilities class
    
        cap.setCapability(MobileCapabilityType.PLATFORM_NAME, MobilePlatform.ANDROID);//Defining the platform
                cap.setCapability(MobileCapabilityType.DEVICE_NAME, "Moto G (5) Plus");//Defining the Mobile handset name
    
    cap.setCapability(MobileCapabilityType.UDID, "ZY223Z68JG");
    
        cap.setCapability("automationName", "UiAutomator2");
    
        cap.setCapability(MobileCapabilityType.NEW_COMMAND_TIMEOUT, 100);//Defining the maximum timeout period to execute command
    
        cap.setCapability("autoGrantPermissions", "true");      
    
        cap.setCapability(MobileCapabilityType.APP, f2.getAbsolutePath());      
    
    //Use the Android Driver to work with Android Platform Elements
            AndroidDriver<AndroidElement> driver = new AndroidDriver<AndroidElement>(new URL("http://127.0.0.1:4723/wd/hub"),cap);
    
    return driver;
    
    public class TestApp extends Example2{
    
    public static void main(String[] args) throws InterruptedException, MalformedURLException 
    {
    
    
           AndroidDriver<AndroidElement> driver = InstallInvokeAPK();
    
        //AndroidDriver<AndroidElement> driver = PackageActivity("com.e9ine.android.driver", "com.e9ine.android.driver.module.AuthenticationModule.view.activity.SpalshScreenActivity");    
    
           driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);      
    
        driver.findElement(By.xpath("//android.widget.EditText[@text='Username']")).sendKeys("abc@xyz.com");        
    
        driver.findElement(By.id("editText_password")).sendKeys("1234");
    
        driver.navigate().back();
    

    这些是appium日志:

    并提供了 MJSONWP 所需的功能 {"app":"C:\Users\e9ine-QA... [BaseDriver] 创建具有 W3C 功能的会话:{"alwaysMatch":{"platformNa... [BaseDriver] Capability 'autoGrantPermissions'从字符串更改为布尔值。这可能会导致意外行为 [BaseDriver] 使用会话 id 创建的会话:384a04e7-e07c-46ce-887e-a4f69f0993f2 [BaseDriver] 使用本地应用程序 'C:\Users\e9ine-QA\Appium\MobileAutomation\src\New Driver app-excel -debug.apk' [UiAutomator2] 检查应用程序是否实际存在 [ADB] 使用 'C:\Users\e9ine-QA\AppData\Local\Android\Sdk\platform-tools\adb.exe' 中的 'adb.exe' [AndroidDriver] 检索设备列表 [ADB] 尝试查找已连接的 android 设备 [ADB] 正在获取已连接的设备... [UiAutomator2] 无法删除端口转发'执行 adbExec 时出错。原始错误:'Command 'C:\Users\e9ine-QA\AppData\Local\Android\Sdk\platform-tools\adb.exe -P 5037 -s ZY223Z68JG forward --remove tcp:8200' exited with code 1'; Stderr: '错误:未知的主机服务'; 代码:'1'' [ADB] 运行 'C:\Users\e9ine-QA\AppData\Local\Android\Sdk\platform-tools\adb.exe -P 5037 -s ZY223Z68JG shell getprop ro.build.version.sdk ' [ADB] 发送命令时出错,重新连接设备并重试:shell,getprop,ro.build.version.sdk [ADB] 尝试查找已连接的 android 设备 [ADB] 正在连接设备... [ADB] 1 个设备) connected [BaseDriver] Event 'newSessionStarted' logging at 1565779812994 (16:20:12 GMT+0530 (India Standard Time)) [W3C] Encountered internal error running command: 错误:获取设备 API 级别时出错。原始错误:执行 adbExec 时出错。原始错误:“命令 'C:\Users\e9ine-QA\AppData\Local\Android\Sdk\platform-tools\adb.exe -P 5037 -s ZY223Z68JG shell getprop ro.build.version.sdk”退出代码 1 '; Stderr:'错误:设备仍在连接'; 代码:亚行的“1”[W3C]。(C:\Program Files\Appium\resources\app\node_modules\appium\node_modules\appium-adb\lib\tools\adb-commands.js:98:13) [W3C] 在 Generator.throw () [W3C] 在asyncGeneratorStep (C:\Program Files\Appium\resources\app\node_modules\appium\node_modules@babel\runtime\helpers\asyncToGenerator.js:3:24) [W3C] 在 _throw (C:\Program Files\Appium\resources\ app\node_modules\appium\node_modules@babel\runtime\helpers\asyncToGenerator.js:29:9) [W3C] 在运行时 (C:

    硒日志:

    线程“主”org.openqa.selenium.SessionNotCreatedException 中的异常:无法创建新的远程会话。请检查服务器日志以获取更多详细信息。原始错误:处理命令时发生未知的服务器端错误。原始错误:获取设备 API 级别时出错。原始错误:执行 adbExec 时出错。原始错误:“命令 'C:\Users\e9ine-QA\AppData\Local\Android\Sdk\platform-tools\adb.exe -P 5037 -s ZY223Z68JG shell getprop ro.build.version.sdk”退出代码 1 '; Stderr:'错误:设备仍在连接'; 代码:'1' 构建信息:版本:'3.141.59',修订:'e82be7d358',时间:'2018-11-14T08:25:48' 系统信息:主机:'DESKTOP-17I5IMK',ip:'192.168 .5.208',os.name:'Windows 10',os.arch:'amd64',os.version:'10.0',java.version:'1.8.0_211' 驱动程序信息:driver.version:AndroidDriver 远程堆栈跟踪:UnknownError:处理命令时发生未知的服务器端错误。原始错误:获取设备 API 级别时出错。原始错误:执行 adbExec 时出错。原始错误:“命令 'C:\Users\e9ine-QA\AppData\Local\Android\Sdk\platform-tools\adb.exe -P 5037 -s ZY223Z68JG shell getprop ro.build.version.sdk”退出代码 1 '; Stderr:'错误:设备仍在连接'; 代码:'1' at getResponseForW3CError (C:\Program Files\Appium\resources\app\node_modules\appium\node_modules\appium-base-driver\lib\protocol\errors.js:826:9) at asyncHandler (C:\ Program Files\Appium\resources\app\node_modules\appium\node_modules\appium-base-driver\lib\protocol\protocol.js:447:37)在进程中。在 sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 java.lang.reflect.Method.invoke(Unknown Source) 的 InvocationTargetException ) 在 io.appium.java_client.remote.AppiumCommandExecutor$1.createSession(AppiumCommandExecutor.java:186) ... 14 更多原因:org.openqa.selenium.WebDriverException:处理命令时发生未知的服务器端错误。原始错误:获取设备 API 级别时出错。原始错误:执行 adbExec 时出错。原始错误:“命令 'C:\Users\e9ine-QA\AppData\Local\Android\Sdk\platform-tools\adb.exe -P 5037 -s ZY223Z68JG shell getprop ro.build.version.sdk”退出代码 1 '; 标准错误:'错误:设备仍在连接'; 代码:'1' 构建信息:版本:'3.141.59',修订:'e82be7d358',时间:'2018-11-14T08:25:48' 系统信息:主机:'DESKTOP-17I5IMK',ip:'192.168 .5.208', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_211' 驱动程序信息: driver.version: AndroidDriver remote stacktrace: UnknownError : 处理命令时发生未知的服务器端错误。原始错误:获取设备 API 级别时出错。原始错误:执行 adbExec 时出错。原始错误:“命令 'C:\Users\e9ine-QA\AppData\Local\Android\Sdk\platform-tools\adb.exe -P 5037 -s ZY223Z68JG shell getprop ro.build.version.sdk”退出代码 1 '; Stderr:'错误:设备仍在连接'; 代码:'1'

4

1 回答 1

0
  1. 删除您的Selenium Remote Driver-3.14.0依赖项,Appium Java Client 7.0.0包括 selenium-java、selenium-support 和 selenium-api 版本 3.141.59 作为传递依赖项。如果您特别需要 Selenium 远程驱动程序,我建议将其升级到 3.141.59 以避免任何 API 不一致。
  2. 尝试通过运行adb kill-server命令重置您的 ADB 主机。在启动 Appium 测试之前,请确保执行abd devices命令并仔细检查您的手机是否处于connected状态

参考:

于 2019-08-14T17:12:10.250 回答