【问题标题】:DesiredCapabilities for Selenium native android application obsoleteSelenium 本机 android 应用程序的 DesiredCapabilities 已过时
【发布时间】:2019-01-14 14:57:30
【问题描述】:

我正在尝试建立一个 selenium 框架来测试 Android 模拟器上的应用程序。但是,我不断收到 DesiredCapabilities 已过时的警告。除了与浏览器的关系之外,我找不到任何关于此的信息。但是在我的框架中,我正在尝试测试本机应用程序。

代码:

    [TestMethod]
    public void Test_Open_Mobile_App()
    {
        DesiredCapabilities cap = new DesiredCapabilities();

        //set the emulator
        cap.SetCapability("platformVersion", "8.1");
        cap.SetCapability("platformName", "Android");
        cap.SetCapability("deviceName", "Device 01 Oreo_1440x2560");
        cap.SetCapability("udid", "emulator-5554");
        cap.SetCapability("deviceType", "phone");
        cap.SetCapability("device", "Android");
        cap.SetCapability("app", "C:/Users/User/Desktop/Mobile Tests/App APK/com.hyperspheric.go4schools.apk");
        cap.SetCapability("appPackage", "appPackage");
        cap.SetCapability("appActivity", "appActivity");


        _driver = new AndroidDriver<AndroidElement>(new Uri("http://127.0.0.1:4723/wd/hub"), cap);
    }

【问题讨论】:

    标签: c# android selenium appium-android


    【解决方案1】:

    由于 DesiredCapabilites 在最新的 selenium 驱动程序中已过时,我们可以为任何浏览器使用特定的浏览器选项,对于 android 本机应用程序,我们可以使用 AppiumOptions。下面的代码应该适用于 android 本机应用程序。

            AppiumOptions cap = new AppiumOptions();
    
            //set the emulator
            cap.AddAdditionalCapability("platformVersion", "8.1");
            cap.AddAdditionalCapability("platformName", "Android");
            cap.AddAdditionalCapability("deviceName", "Device 01 Oreo_1440x2560");
            cap.AddAdditionalCapability("udid", "emulator-5554");
            cap.AddAdditionalCapability("deviceType", "phone");
            cap.AddAdditionalCapability("device", "Android");
            cap.AddAdditionalCapability("app", "C:/Users/User/Desktop/Mobile Tests/App APK/com.hyperspheric.go4schools.apk");
            cap.AddAdditionalCapability("appPackage", "appPackage");
            cap.AddAdditionalCapability("appActivity", "appActivity");
    

    【讨论】:

      【解决方案2】:

      .NET 绑定正在朝着不应该使用 DesiredCapabilites 的模式发展 直接使用。为此,ChromeOptions 类 有一个 ToCapabilities() 方法。

      编辑:

      这应该可以正常工作:

      ChromeOptions options = new ChromeOptions()
      DesiredCaps = options.ToCapabilities() as DesiredCapabilities;
      DesiredCaps.SetCapability("platformName","Android");
      DesiredCaps.SetCapability("platformVersion", "8.1");
      DesiredCaps.SetCapability("deviceName", "Device 01 Oreo_1440x2560");
      DesiredCaps.SetCapability("device", "Android");
      
      AppDriver = new AndroidDriver<AppiumWebElement>(new Uri("http://127.0.0.1:4723/wd/hub"), DesiredCaps, TimeSpan.FromSeconds(300));
      

      【讨论】:

      • 我刚刚收到错误OpenQA.Selenium.WebDriverException: An unknown server-side error occurred while processing the command. Original error: You must include a platformName capability
      • 检查我更新的答案。根据您的需要使用您的能力。我刚刚展示了我是如何做到这一点的。
      • 对不起,我缺乏理解,但使用该代码会引发错误。 DesiredCapsoptionsAppDriver都有..does not exist in the current context等错误
      【解决方案3】:

      到目前为止,Appium 的开发人员(提供AnroidDriver 类)还没有实现绕过使用DesiredCapabilities 类的解决方案。 (我找不到任何相关的问题或拉取请求)

      如本文所述selenium issue

      【讨论】:

        猜你喜欢
        • 2018-05-31
        • 2016-05-26
        • 2016-04-16
        • 1970-01-01
        • 2014-07-13
        • 2014-10-21
        • 2022-11-28
        • 1970-01-01
        • 2018-05-07
        相关资源
        最近更新 更多