【问题标题】:Native Browser Automation using Appium 1.2.0.1 on Windows 7 Android real device: Could not find a connected Android device在 Windows 7 Android 真实设备上使用 Appium 1.2.0.1 的本机浏览器自动化:找不到连接的 Android 设备
【发布时间】:2014-09-15 20:24:50
【问题描述】:

我查看了很多关于这个问题的论坛,有很多关于这个主题的答案,但没有一个对我有用/不符合我的标准。

我最近接手了移动自动化任务,因此对 Appium 完全陌生。我正在 Windows 7 上使用 Appium 1.2.0.1 并尝试在 Android v4.3 真实设备上自动化本机 Android 浏览器(不是 Chrome 或应用程序)。 我已经按照说明安装了所有东西。我在 JUnit Framework 的 Maven Build 中使用 Selenium 通过 Appium 执行脚本。我在管理员模式下使用 Appuim.exe 并使用 GUI 启动节点。然后我运行我的脚本。

我的问题是,当我在 cmd 中尝试“adb devices”时,我能够看到该设备。然而,在执行期间,Appium 抛出错误“无法启动 Appium 会话,错误是:错误:找不到连接的 Android 设备。”我尝试了许多故障排除选项并验证是否一切就绪。没运气。请帮忙。

下面是错误的痕迹:

> Checking if an update is available
> Update not available
> Starting Node Server
> info: Welcome to Appium v1.2.0 (REV e53f49c706a25242e66d36685c268b599cc18da5)
> debug: Non-default server args: {"address":"127.0.0.1","fullReset":true,"logNoColors":true,"platformName":"Android","platformVersion":"18","automationName":"Appium","browserName":"Browser"}
> info: Appium REST http interface listener started on 127.0.0.1:4723
> info: LogLevel: debug
> info: --> POST /wd/hub/session {"desiredCapabilities":{"platformVersion":"4.3","browserName":"Browser","platformName":"Android","device":"Android","deviceName":"Android"}}
> debug: Appium request initiated at /wd/hub/session
> info: Retrieving device
> warn:  code=ENOENT, errno=ENOENT, syscall=spawn
> debug: Request received with params: {"desiredCapabilities":{"platformVersion":"4.3","browserName":"Browser","platformName":"Android","device":"Android","deviceName":"Android"}}
> debug: The following desired capabilities were provided, but not recognized by appium. They will be passed on to any other services running on this server. : device
> debug: Looks like we want chrome on android
> debug: Creating new appium session fa19e382-c178-4e6b-8150-a386a51bee39
> debug: Preparing device for session
> debug: Not checking whether app is present since we are assuming it's already on the device
> debug: Checking whether adb is present
> debug: Using adb from C:\Android\android-sdk\platform-tools\adb.exe
> debug: Trying to find a connected android device
> debug: Getting connected devices...
> debug: executing: "C:\Android\android-sdk\platform-tools\adb.exe" devices
> debug: Could not find devices, restarting adb server...
> debug: executing: "C:\Android\android-sdk\platform-tools\adb.exe" kill-server
> warn:  code=ENOENT, errno=ENOENT, syscall=spawn
> warn:  code=ENOENT, errno=ENOENT, syscall=spawn
> debug: Getting connected devices...
> debug: executing: "C:\Android\android-sdk\platform-tools\adb.exe" devices
> debug: Could not find devices, restarting adb server...
> debug: executing: "C:\Android\android-sdk\platform-tools\adb.exe" kill-server
> error: Error killing ADB server, going to see if it's online anyway
> debug: Getting connected devices...
> debug: executing: "C:\Android\android-sdk\platform-tools\adb.exe" devices
> debug: Could not find devices, restarting adb server...
> warn:  code=ENOENT, errno=ENOENT, syscall=spawn
> warn:  code=ENOENT, errno=ENOENT, syscall=spawn
> debug: executing: "C:\Android\android-sdk\platform-tools\adb.exe" kill-server
> warn:  code=ENOENT, errno=ENOENT, syscall=spawn
> error: Error killing ADB server, going to see if it's online anyway
> warn:  code=ENOENT, errno=ENOENT, syscall=spawn
> info: <-- POST /wd/hub/session 500 20314.056 ms - 206 
> debug: Getting connected devices...
> debug: executing: "C:\Android\android-sdk\platform-tools\adb.exe" devices
> debug: Cleaning up appium session
> error: Failed to start an Appium session, err was: Error: Could not find a connected Android device.
> debug: Error: Could not find a connected Android device.
>     at ADB.getDevicesWithRetry (C:\Selenium\AppiumForWindows-1.2.0.1\Appium\node_modules\appium\node_modules\appium-adb\lib\adb.js:600:15)
>     at androidCommon.prepareActiveDevice (C:\Selenium\AppiumForWindows-1.2.0.1\Appium\node_modules\appium\lib\devices\android\android-common.js:349:12)
>     at null.<anonymous> (C:\Selenium\AppiumForWindows-1.2.0.1\Appium\node_modules\appium\lib\devices\android\android-common.js:289:26)
>     at C:\Selenium\AppiumForWindows-1.2.0.1\Appium\node_modules\appium\node_modules\async\lib\async.js:610:21
>     at C:\Selenium\AppiumForWindows-1.2.0.1\Appium\node_modules\appium\node_modules\async\lib\async.js:249:17
>     at iterate (C:\Selenium\AppiumForWindows-1.2.0.1\Appium\node_modules\appium\node_modules\async\lib\async.js:149:13)
>     at C:\Selenium\AppiumForWindows-1.2.0.1\Appium\node_modules\appium\node_modules\async\lib\async.js:160:25
>     at C:\Selenium\AppiumForWindows-1.2.0.1\Appium\node_modules\appium\node_modules\async\lib\async.js:251:21
>     at C:\Selenium\AppiumForWindows-1.2.0.1\Appium\node_modules\appium\node_modules\async\lib\async.js:615:34
>     at androidCommon.prepareEmulator (C:\Selenium\AppiumForWindows-1.2.0.1\Appium\node_modules\appium\lib\devices\android\android-common.js:339:5)
> debug: Responding to client with error: {"status":33,"value":{"message":"A new session could not be created. (Original error: Could not find a connected Android device.)","origValue":"Could not find a connected Android device."},"sessionId":null}

这是我的代码:

if (runEnv.equals("Android")) 
        {
            DesiredCapabilities capabilities = new DesiredCapabilities();
              capabilities.setCapability("device","Android");
              capabilities.setCapability("deviceName","Android");
              capabilities.setCapability("platformName","Android");
              capabilities.setCapability("browserName", "Browser");
              capabilities.setCapability("platformVersion", "4.3");

              try {
                driver = new RemoteWebDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
            } catch (MalformedURLException e) {
                e.printStackTrace();
            }

            driver.manage().timeouts().implicitlyWait(80, TimeUnit.SECONDS);
        }

请帮忙!

谢谢, 阿皮塔

【问题讨论】:

    标签: android maven selenium appium


    【解决方案1】:

    请用下面的代码修改你的代码,希望它可以工作

    DesiredCapabilities capabilities = new DesiredCapabilities();
       capabilities.setCapability(CapabilityType.BROWSER_NAME, "");
       capabilities.setCapability("deviceName","sony xperia Z");
       capabilities.setCapability("platformVersion", "4.4");
       capabilities.setCapability("platformName","Android");
       capabilities.setCapability("appPackage", "com.android.calculator2");
       capabilities.setCapability("appActivity", "com.android.calculator2.Calculator");
       driver = new AppiumDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
    

    【讨论】:

    • 我试过了,还是一样!我被困在 Appium 无法与设备通信的地方。
    • 设备中是否安装了应用程序、apk文件?可能的选项是未检测到您的设备或 adb 存在问题。只需尝试先连接设备,然后在 appium 中单击“启动”,然后检查该应用是否已安装到设备中。
    • 不,当我在管理员模式下启动 Appium 并通过 USB 连接设备时,我没有看到设备上安装了任何东西。而当我执行 adb devices 时,我可以看到它已列出。我猜 Appium 没有与 ADB 交谈..不知道我还能做什么。我的所有设置都是按照说明进行的。我也安装了 Node.js 和 ANT.as。
    • 而且仅供参考,我不使用任何应用程序,我只想自动化 Android Native 浏览器。
    • 对不起,我没有注意到细节,让我说清楚。您正在尝试自动化您所说的作为 Android 原生浏览器的 chrome 应用程序,对吗?
    【解决方案2】:

    试试这个代码

    DesiredCapabilities capabilities = new DesiredCapabilities();
    capabilities.setCapability(MobileCapabilityType.PLATFORM_NAME, "Android");
    capabilities.setCapability(MobileCapabilityType.PLATFORM_VERSION, "4.4");
    capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, "Android Emulator");
    capabilities.setCapability(MobileCapabilityType.BROWSER_NAME, "Chrome");
    

    将 Device_Name 更改为“Android”,这可能会起作用。

    【讨论】:

      【解决方案3】:

      在 deviceName 字段中复制并粘贴运行 adb devies 命令时在 cmd 窗口中给出的 ID。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-12-11
        • 2019-09-02
        • 1970-01-01
        • 2014-01-14
        • 1970-01-01
        • 2019-08-24
        • 2020-04-30
        • 2016-02-04
        相关资源
        最近更新 更多