【问题标题】:If DesiredCapabilities are obsolute in Selenium 3+, what to use instead for mobile web tests?如果 DesiredCapabilities 在 Selenium 3+ 中已过时,那么在移动 Web 测试中使用什么来代替?
【发布时间】:2019-06-29 16:53:10
【问题描述】:

我正在尝试学习如何在 SauceLabs 中编写自动化 Web 测试,而 Visual Studio 告诉我 DesiredCapabilities 在 Selenium 3 中已弃用。我想出了如何使用 ChromeOptions 进行桌面测试,但是移动 Web 测试呢?这有效:

DesiredCapabilities caps = new DesiredCapabilities();
caps.SetCapability("deviceName", "iPhone 8 Simulator");
caps.SetCapability("deviceOrientation", "portrait");
caps.SetCapability("platformVersion", "12.0");
caps.SetCapability("platformName", "iOS");
caps.SetCapability("browserName", "Safari");
caps.SetCapability("username", SauceUsername);
caps.SetCapability("accessKey", SauceAccessKey);
caps.SetCapability("name", TestContext.TestName);
_driver = new RemoteWebDriver(new Uri("http://ondemand.saucelabs.com:80/wd/hub"),
            caps, TimeSpan.FromSeconds(600));

但我不想使用已弃用的类。我过去曾大量使用过 Selenium,但这是我第一次进行移动网络测试(没有应用程序,只有 Safari/移动 Chrome)。我应该改用 Appium 驱动程序吗?

【问题讨论】:

    标签: c# selenium-webdriver appium saucelabs


    【解决方案1】:

    future release of Appium v4 中将有一个 AppiumOptions() 来替换它。你现在可以把它拉下来试试看。

    它看起来像这样:

    public void SimpleTest()
    {
        var appiumOptions = new AppiumOptions();
        appiumOptions.AddAdditionalCapability(MobileCapabilityType.PlatformName, "Android");
        appiumOptions.AddAdditionalCapability(MobileCapabilityType.PlatformVersion, "7.1.1");
    
        appiumOptions.AddAdditionalCapability(MobileCapabilityType.FullReset, true);
        appiumOptions.AddAdditionalCapability(MobileCapabilityType.NewCommandTimeout, 60);
    
        appiumOptions.AddAdditionalCapability("testobject_api_key", "0D6C044F19D0442BA1E11C3FF087F6A6");
        appiumOptions.AddAdditionalCapability("username", SauceUser.Name);
        appiumOptions.AddAdditionalCapability("accessKey", SauceUser.AccessKey);
        //TODO first you must upload an app to Test Object so that you get your app key
    
        var rdcUrl = "https://us1.appium.testobject.com/wd/hub";
        var driver = new AndroidDriver<IWebElement>(new Uri(rdcUrl), appiumOptions);
        driver.Navigate().GoToUrl("https://www.ultimateqa.com");
        Console.WriteLine("");
        driver.Quit();
    }
    

    【讨论】:

    • 所以目前没有办法使用稳定的 Appium nuget 以非弃用的方式做到这一点?
    • 我不知道。我想你有几个选择。首先,使用 DesiredCaps,然后切换。其次,使用 Nuget 包的 Beta 版本,这样您就可以使用最新版本。第三,您可能会创建一个包装器并将其命名为类似于创建移动浏览器的 DriverFactory。在任何地方使用它。然后,当需要升级时,您只需在一个地方更新实现,但用法将保持不变。这可能是未来证明您的代码的最佳选择
    【解决方案2】:

    我认为你应该用 appium 驱动试试这个。只需下载 appium c# 客户端并启动。您可以使用以下链接开始。

    http://appium.io/docs/en/writing-running-appium/web/mobile-web/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-05
      • 1970-01-01
      • 1970-01-01
      • 2011-02-26
      • 2018-07-25
      • 1970-01-01
      • 2022-09-23
      • 2011-04-02
      相关资源
      最近更新 更多