Appium 请教为什么模拟器上安装了最新版的 Chrome,运行时却提示用的是旧版本的?(问题更新在 6 楼)

Will · 2019年02月12日 · 最后由 nsqccyx-github 回复于 2019年09月18日 · 3824 次阅读

新人刚开始学习用 C# 搭配 Appium 在移动端测试,但是一开始就被卡住了。遇到的问题是在 visual studio 里运行测试的时候一直返回下面的报错

Message: System.InvalidOperationException : An unknown server-side error occurred while processing the command. Original error: Failed to start Chromedriver session: An unknown server-side error occurred while processing the command. Original error: unknown error: Failed to get sockets matching: @webview_devtools_remote_.*11524 (make sure the app has its WebView configured for debugging) (Driver info: chromedriver=2.46.628402 (536cd7adbad73a3783fdc2cab92ab2ba7ec361e1),platform=Windows NT 10.0.17134 x86_64)

在网上搜索了很多,大多数都是说 chromedriver 的版本不对,然后我试过了好几个版本的 chromedriver 还是一样的报错,根据 chromedriver 官网上的说明,我试过了支持 chrome v72 版本的 chromedriver 2.45, 2.46 和他们前后的好几个版本都是一样的报错,现在就是卡在这里进行不下去了。求大神帮忙看一下应该怎么解决。

移动设备:夜神 5.0.0.0 模拟器(不是最新版的,因为 5.0 版本以上的所有新版本夜神都不能在 chrome 浏览器里显示 webview)
模拟器 Android 版本:4.4.2(已开启 USB debug 模式)
Appium 版本: 1.10.0
电脑上安装的 chrome 浏览器版本:72.0.3626.96
夜神模拟器里安装的 chrome 浏览器版本:72.0.3626.105
模拟器上测试的 app: Ionic
状况大致过程:在 visual studio 里运行测试的代码,系统能找到模拟器并打开所要测试的 app,但是再接下来就出现上面的报错了。
C# 代码

using NUnit.Framework;
using OpenQA.Selenium.Appium.Android;
using OpenQA.Selenium.Appium.Enums;
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium.Remote;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace AppiumPractice
{
    [TestFixture]
    public class TestClass
    {
        [Test]
        public void OpenAppium()
        {
            DesiredCapabilities desiredCapabilities = new DesiredCapabilities();
            desiredCapabilities.SetCapability(MobileCapabilityType.PlatformName, "Android");
            desiredCapabilities.SetCapability(MobileCapabilityType.DeviceName, "127.0.0.1:62001");
            desiredCapabilities.SetCapability(MobileCapabilityType.App, @"K:\complete.apk");
            desiredCapabilities.SetCapability("chromedriverExecutable", @"C:\Users\whuang\chromedriver_win32\chromedriver.exe");
            ChromeOptions chromeOpt = new ChromeOptions();
            chromeOpt.AddAdditionalCapability("androidPackage", "com.android.chrome");
            AndroidDriver<AndroidElement> androidDriver = new AndroidDriver<AndroidElement>(desiredCapabilities);

            var driv = androidDriver.Contexts.First(x => x.Contains("WEBVIEW_"));
            androidDriver.Context = driv;
            androidDriver.FindElementByXPath("//span[text()='About']").Click();
        }
    }
}

共收到 8 条回复 时间 点赞

你是要测试你的 APP,还是要测试 手机 web?

Will #2 · 2019年02月13日 Author
arrow 回复

是想测试 APP 啊,但是得先转换 android driver 到 webview 模式,好像应该是这么说吧,新手小白不知道这样说能不能看得明白

你的 App 是混合 APP? 你的 App 中使用的 WebView 是那个版本的?需要根据你的 App 中使用的 WebView 版本找到对应的 chromeDriver.
下面地址中可以找到 webdriver 和 chrome Webview 版本之间的对应关系。
http://chromedriver.storage.googleapis.com/index.html

Will #4 · 2019年02月14日 Author
西秀岭 回复

对,是个混合型的 app. 我是在上一个在线课程的课,里面教程用的是这个叫 Ionic 的 app,貌似讲师在课里面说这个 app 是个 Hybrid App.
怎么知道这个 app 中使用的 webview 版本呢?不知道怎么查看

Will #5 · 2019年02月16日 Author

有大神知道怎么查看 app 中使用的 webview 版本吗?我搜索了好多,都是在讨论安卓系统的 webview 版本,没有找到关于 app 中 webview 的讨论。求大神帮忙

Will #6 · 2019年02月20日 Author

问题解决了!貌似问题是出在安装在 android4.4.2 上的 chrome 版本太高了,后来把 android 系统的版本升到 5.1.1,就可以运行了。但是遇到了另一个小问题,模拟器上安装的 chrome 版本是最新的 V72,但是运行时返回错误说我用的 chrome 版本 v39 太老,让升级 chrome 至 V71~75 版本,但是明明安装的是 V72 版啊。虽然降级 chromedriver 到适配 chromeV39 的版本也可以运行测试,但是为什么明明装的是 V72 版但是却检查到 V39 呢?

Will 回复

我也遇到了这个问题,我装的 V73,说我用的是 V63,请问你解决了吗。

请问下,我的安卓版本是 7.0,为什么也会遇到这个问题呢

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册