/// <summary> /// Initializes the Appium driver. Service can be set using .see AppiumServer /// for local execution and by setting the .seealso TestRunParameters.LocalExecution, /// nodeEXE and AppiumJS path in runsettings file. Set AppiumServerUri for grid or manual server test execution. /// To get the instance of the appropriate driver, use the .see "GetInstance" method /// </summary> /// <param name="capabilities">Capabilities expected of the driver</param> public static void Initialize(DriverCapabilities capabilities) { AppiumDriver <AppiumWebElement> instance; TestEnvironmentParameters TestRunParameters = capabilities.GetEnvironmentContext(); TimeSpan implicitWaitTimeSpan = TimeSpan.FromSeconds(Convert.ToInt32(TestRunParameters.RS_ImplicitWaitTime)); instance = InitializeDriver(capabilities); instance.Manage().Timeouts().ImplicitWait = implicitWaitTimeSpan; Instance = instance; }
private static AppiumDriver <AppiumWebElement> InitializeDriver(DriverCapabilities capabilities) { AppiumOptions caps = capabilities.GetDriverOptions(); TestEnvironmentParameters TestRunParameters = capabilities.GetEnvironmentContext(); int timeout = Convert.ToInt32(TestRunParameters.RS_DeviceReadyTimeout); Uri serverUri = TestRunParameters.ServerUri; if (TestRunParameters.RS_PlatformName.Equals("Android", StringComparison.OrdinalIgnoreCase)) { return(GetDriver(() => new CustomAndroidDriver(serverUri, caps, TimeSpan.FromSeconds(timeout)))); } if (TestRunParameters.RS_PlatformName.Equals("iOS", StringComparison.OrdinalIgnoreCase)) { return(GetDriver(() => new CustomIOSDriver(serverUri, caps, TimeSpan.FromSeconds(timeout)))); } throw new PlatformNotSupportedException($"[{TestRunParameters.RS_PlatformName}] platform is not supported."); }