首页 > 解决方案 > 如果 DesiredCapabilities 在 Selenium 3+ 中已经过时,那么在移动 Web 测试中使用什么来代替?

问题描述

我正在尝试学习如何在 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,但这是我第一次进行移动 Web 测试(没有应用程序,只有 Safari/移动 Chrome)。我应该改用 Appium 驱动程序吗?

标签: c#selenium-webdriverappiumsaucelabs

解决方案


在 Appium v​​4 的未来版本中将有一个 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();
}

推荐阅读