appium / dotnet-client

Extension to the official Selenium dotnet webdriver
Apache License 2.0
381 stars 186 forks source link

Unable to start Appium server programatically using C# in MAC #753

Closed ishuvir closed 3 months ago

ishuvir commented 7 months ago

Do I have the most recent component updates?

Is the component officially supported by the Appium team?

Is there an existing issue for this?

Current Behavior

I have automation framework created using C# for iOS and android automation. I am able to start and perform automation my launching appium2 manually .

user@UserMacBook-Pro ~ % appium [Appium] Welcome to Appium v2.5.1 (REV d7d4c8266210c024b93a450a7daaa357cec0b46a1bb) [Appium] The autodetected Appium home path: /Users/user/.appium [Appium] Attempting to load driver uiautomator2... [Appium] Attempting to load driver xcuitest... [Appium] Requiring driver at /Users/user/.appium/node_modules/appium-xcuitest-driver/build/index.js [Appium] Requiring driver at /Users/user/.appium/node_modules/appium-uiautomator2-driver/build/index.js [Appium] XCUITestDriver has been successfully loaded in 10.062s [Appium] AndroidUiautomator2Driver has been successfully loaded in 10.064s [Appium] Appium REST http interface listener started on http://0.0.0.0:4723 [Appium] You can provide the following URLs in your client code to connect to this server: [Appium] http://127.0.0.1:4723/ (only accessible from the same host) [Appium] http://100.80.101.144:4723/ [Appium] Available drivers: [Appium] - uiautomator2@2.32.2 (automationName 'UiAutomator2') [Appium] - xcuitest@5.9.1 (automationName 'XCUITest') [Appium] Available plugins: [Appium] - images@2.1.5 [Appium] - execute-driver@3.0.19 [Appium] No plugins activated. Use the --use-plugins flag with names of plugins to activate

But Issue start happening when i tried to start programatically

I using below code to start appium server programatically -->

` var builder = new AppiumServiceBuilder(); var appiumLocalService = builder.UsingAnyFreePort().Build(); appiumLocalService.Start();

AppiumOptions appiumOptions = new AppiumOptions(); appiumOptions.AddAdditionalCapability("appium:automationName", "XCUITest"); appiumOptions.AddAdditionalCapability("platformName", "ios"); appiumOptions.AddAdditionalCapability("appium:platformVersion", DeviceVersion); appiumOptions.AddAdditionalCapability("appium:udid", UUID);

appiumDriver = new IOSDriver(appiumLocalService.ServiceUrl, appiumOptions, TimeSpan.FromMilliseconds(GLOBAL.CONTROL_WAIT_TIME* 2) `

But getting below error

OpenQA.Selenium.Appium.Service.Exceptions.AppiumServerHasNotBeenStartedLocallyException : The local appium server has not been started. The given Node.js executable: /opt/homebrew/bin/node Arguments: "/opt/homebrew/lib/node_modules/appium/build/lib/main.js" --port "52795" --address "127.0.0.1". Time 120000 ms for the service starting has been expired!

verified things :
1: When i tried to verify path of node using which node in terminal - > /opt/homebrew/bin/node 2: when i tried to verify the path of appium using which node in terminal ->/opt/homebrew/bin/appium

versions: node: v21.6.2 Appium: 2.5.1

Please let me know whats the issue as above error is occurring and blocking to use start the appium server programatically .Thanks

Expected Behavior

I am expecting to use the appium server programatically using C# in MAC to automation iOS and android application

Minimal Reproducible Example

I have tried to use below code example to make it work but i couldnt

1: var builder = new AppiumServiceBuilder(); var appiumLocalService = builder.UsingAnyFreePort().Build(); appiumLocalService.Start();

2: ` var appiumService = builder.WithIPAddress("127.0.0.1").UsingPort(4723)

             .WithAppiumJS(new FileInfo(appiumPath)).WithEnvironment(new System.Collections.Generic.Dictionary<string, string> {
                { "PATH", nodePath }
            })
            .Build();
        appiumService.Start();`

shows this error for above code sample

OpenQA.Selenium.Appium.Service.Exceptions.AppiumServerHasNotBeenStartedLocallyException : The local appium server has not been started. The given Node.js executable: /opt/homebrew/bin/node Arguments: "/opt/homebrew/lib/node_modules/appium/build/lib/main.js" --port "52795" --address "127.0.0.1". Time 120000 ms for the service starting has been expired!

I have tried one more thing not sure its relevant but i saw the different behaviour .

string nodePath = "/opt/homebrew/bin/node"; string appiumPath = "/opt/homebrew/lib/node_modules/appium/build/lib/main.js";

first i called this method -->

string nodePath = "/opt/homebrew/bin/node";
 string appiumPath = "/opt/homebrew/lib/node_modules/appium/build/lib/main.js";

       public static Process StartAppiumServer(string nodePath, string appiumPath)
        {
            try
            {
                ProcessStartInfo psi = new ProcessStartInfo();
                psi.FileName = nodePath;
                psi.Arguments = "\"" + appiumPath + "\"";
                // Redirect standard output and error to console
                psi.RedirectStandardOutput = true;
                psi.RedirectStandardError = true;
                psi.UseShellExecute = false;
                psi.CreateNoWindow = true;
                Process process = new Process();
                process.StartInfo = psi;
                // Event handlers for output and error data
                process.OutputDataReceived += (sender, args) => Console.WriteLine(args.Data);
                process.ErrorDataReceived += (sender, args) => Console.WriteLine(args.Data);
                process.Start();
                process.BeginOutputReadLine();
                process.BeginErrorReadLine();
                Console.WriteLine("Appium server started. Press any key to stop.");
                return process;
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error starting Appium server: " + ex.Message);
                return null;

            }
        }

then peformed this

` var builder = new AppiumServiceBuilder(); var appiumLocalService = builder.UsingAnyFreePort().Build(); appiumLocalService.Start();

AppiumOptions appiumOptions = new AppiumOptions(); appiumOptions.AddAdditionalCapability("appium:automationName", "XCUITest"); appiumOptions.AddAdditionalCapability("platformName", "ios"); appiumOptions.AddAdditionalCapability("appium:platformVersion", DeviceVersion); appiumOptions.AddAdditionalCapability("appium:udid", UUID);

appiumDriver = new IOSDriver(appiumLocalService.ServiceUrl, appiumOptions, TimeSpan.FromMilliseconds(GLOBAL.CONTROL_WAIT_TIME* 2) `

getting the below error

Appium server started. Press any key to stop. [Appium] Welcome to Appium v2.5.1 (REV d7d4c82662bb10c024b93a450a7d357cec0b46a1bb) [Appium] The autodetected Appium home path: /Users/user/.appium [Appium] Attempting to load driver uiautomator2... [Appium] Attempting to load driver xcuitest... [Appium] Requiring driver at /Users/user/.appium/node_modules/appium-uiautomator2-driver/build/index.js [Appium] Requiring driver at /Users/user/.appium/node_modules/appium-xcuitest-driver/build/index.js [Appium] AndroidUiautomator2Driver has been successfully loaded in 3.857s [Appium] XCUITestDriver has been successfully loaded in 3.857s [Appium] Appium REST http interface listener started on http://0.0.0.0:4723 [Appium] You can provide the following URLs in your client code to connect to this server: [Appium] http://127.0.0.1:4723/ (only accessible from the same host) [Appium] http://100.80.101.144:4723/ [Appium] Available drivers: [Appium] - uiautomator2@2.32.2 (automationName 'UiAutomator2') [Appium] - xcuitest@5.9.1 (automationName 'XCUITest') [Appium] Available plugins: [Appium] - images@2.1.5 [Appium] - execute-driver@3.0.19 [Appium] No plugins activated. Use the --use-plugins flag with names of plugins to activate [HTTP] --> GET /session/4becb82c-c5e6-4fae-9f1d-00e298a34ad4/timeouts [HTTP] {} [AppiumDriver@cd8b] Encountered internal error running command: NoSuchDriverError: A session is either terminated or not started [AppiumDriver@cd8b] at asyncHandler (/opt/homebrew/lib/node_modules/appium/node_modules/@appium/base-driver/lib/protocol/protocol.js:315:15) [AppiumDriver@cd8b] at /opt/homebrew/lib/node_modules/appium/node_modules/@appium/base-driver/lib/protocol/protocol.js:518:15 [AppiumDriver@cd8b] at Layer.handle [as handle_request] (/opt/homebrew/lib/node_modules/appium/node_modules/express/lib/router/layer.js:95:5) [AppiumDriver@cd8b] at next (/opt/homebrew/lib/node_modules/appium/node_modules/express/lib/router/route.js:144:13) [AppiumDriver@cd8b] at Route.dispatch (/opt/homebrew/lib/node_modules/appium/node_modules/express/lib/router/route.js:114:3) [AppiumDriver@cd8b] at Layer.handle [as handle_request] (/opt/homebrew/lib/node_modules/appium/node_modules/express/lib/router/layer.js:95:5) [AppiumDriver@cd8b] at /opt/homebrew/lib/node_modules/appium/node_modules/express/lib/router/index.js:284:15 [AppiumDriver@cd8b] at param (/opt/homebrew/lib/node_modules/appium/node_modules/express/lib/router/index.js:365:14) [AppiumDriver@cd8b] at param (/opt/homebrew/lib/node_modules/appium/node_modules/express/lib/router/index.js:376:14) [AppiumDriver@cd8b] at Function.process_params (/opt/homebrew/lib/node_modules/appium/node_modules/express/lib/router/index.js:421:3) [AppiumDriver@cd8b] at next (/opt/homebrew/lib/node_modules/appium/node_modules/express/lib/router/index.js:280:10) [AppiumDriver@cd8b] at logger (/opt/homebrew/lib/node_modules/appium/node_modules/morgan/index.js:144:5) [AppiumDriver@cd8b] at Layer.handle [as handle_request] (/opt/homebrew/lib/node_modules/appium/node_modules/express/lib/router/layer.js:95:5) [AppiumDriver@cd8b] at trim_prefix (/opt/homebrew/lib/node_modules/appium/node_modules/express/lib/router/index.js:328:13) [AppiumDriver@cd8b] at /opt/homebrew/lib/node_modules/appium/node_modules/express/lib/router/index.js:286:9 [AppiumDriver@cd8b] at Function.process_params (/opt/homebrew/lib/node_modules/appium/node_modules/express/lib/router/index.js:346:12) [AppiumDriver@cd8b] at next (/opt/homebrew/lib/node_modules/appium/node_modules/express/lib/router/index.js:280:10) [AppiumDriver@cd8b] at jsonParser (/opt/homebrew/lib/node_modules/appium/node_modules/body-parser/lib/types/json.js:113:7) [AppiumDriver@cd8b] at Layer.handle [as handle_request] (/opt/homebrew/lib/node_modules/appium/node_modules/express/lib/router/layer.js:95:5) [AppiumDriver@cd8b] at trim_prefix (/opt/homebrew/lib/node_modules/appium/node_modules/express/lib/router/index.js:328:13) [AppiumDriver@cd8b] at /opt/homebrew/lib/node_modules/appium/node_modules/express/lib/router/index.js:286:9 [AppiumDriver@cd8b] at Function.process_params (/opt/homebrew/lib/node_modules/appium/node_modules/express/lib/router/index.js:346:12) [AppiumDriver@cd8b] at next (/opt/homebrew/lib/node_modules/appium/node_modules/express/lib/router/index.js:280:10) [AppiumDriver@cd8b] at Layer.handle [as handle_request] (/opt/homebrew/lib/node_modules/appium/node_modules/express/lib/router/layer.js:91:12) [AppiumDriver@cd8b] at trim_prefix (/opt/homebrew/lib/node_modules/appium/node_modules/express/lib/router/index.js:328:13) [AppiumDriver@cd8b] at /opt/homebrew/lib/node_modules/appium/node_modules/express/lib/router/index.js:286:9 [AppiumDriver@cd8b] at Function.process_params (/opt/homebrew/lib/node_modules/appium/node_modules/express/lib/router/index.js:346:12) [AppiumDriver@cd8b] at next (/opt/homebrew/lib/node_modules/appium/node_modules/express/lib/router/index.js:280:10) [HTTP] <-- GET /session/4becb82c-c5e6-4fae-9f1d-00e298a34ad4/timeouts 404 21 ms - 3244 [HTTP] [HTTP] --> GET /session/4becb82c-c5e6-4fae-9f1d-00e298a34ad4/timeouts [HTTP] {} [AppiumDriver@cd8b] Encountered internal error running command: NoSuchDriverError: A session is either terminated or not started [AppiumDriver@cd8b] at asyncHandler (/opt/homebrew/lib/node_modules/appium/node_modules/@appium/base-driver/lib/protocol/protocol.js:315:15) [AppiumDriver@cd8b] at /opt/homebrew/lib/node_modules/appium/node_modules/@appium/base-driver/lib/protocol/protocol.js:518:15 [AppiumDriver@cd8b] at Layer.handle [as handle_request] (/opt/homebrew/lib/node_modules/appium/node_modules/express/lib/router/layer.js:95:5) [AppiumDriver@cd8b] at next (/opt/homebrew/lib/node_modules/appium/node_modules/express/lib/router/route.js:144:13) [AppiumDriver@cd8b] at Route.dispatch (/opt/homebrew/lib/node_modules/appium/node_modules/express/lib/router/route.js:114:3) [AppiumDriver@cd8b] at Layer.handle [as handle_request] (/opt/homebrew/lib/node_modules/appium/node_modules/express/lib/router/layer.js:95:5) [AppiumDriver@cd8b] at /opt/homebrew/lib/node_modules/appium/node_modules/express/lib/router/index.js:284:15 [AppiumDriver@cd8b] at param (/opt/homebrew/lib/node_modules/appium/node_modules/express/lib/router/index.js:365:14) [AppiumDriver@cd8b] at param (/opt/homebrew/lib/node_modules/appium/node_modules/express/lib/router/index.js:376:14) [AppiumDriver@cd8b] at Function.process_params (/opt/homebrew/lib/node_modules/appium/node_modules/express/lib/router/index.js:421:3) [AppiumDriver@cd8b] at next (/opt/homebrew/lib/node_modules/appium/node_modules/express/lib/router/index.js:280:10) [AppiumDriver@cd8b] at logger (/opt/homebrew/lib/node_modules/appium/node_modules/morgan/index.js:144:5) [AppiumDriver@cd8b] at Layer.handle [as handle_request] (/opt/homebrew/lib/node_modules/appium/node_modules/express/lib/router/layer.js:95:5) [AppiumDriver@cd8b] at trim_prefix (/opt/homebrew/lib/node_modules/appium/node_modules/express/lib/router/index.js:328:13) [AppiumDriver@cd8b] at /opt/homebrew/lib/node_modules/appium/node_modules/express/lib/router/index.js:286:9 [AppiumDriver@cd8b] at Function.process_params (/opt/homebrew/lib/node_modules/appium/node_modules/express/lib/router/index.js:346:12) [AppiumDriver@cd8b] at next (/opt/homebrew/lib/node_modules/appium/node_modules/express/lib/router/index.js:280:10) [AppiumDriver@cd8b] at jsonParser (/opt/homebrew/lib/node_modules/appium/node_modules/body-parser/lib/types/json.js:113:7) [AppiumDriver@cd8b] at Layer.handle [as handle_request] (/opt/homebrew/lib/node_modules/appium/node_modules/express/lib/router/layer.js:95:5) [AppiumDriver@cd8b] at trim_prefix (/opt/homebrew/lib/node_modules/appium/node_modules/express/lib/router/index.js:328:13) [AppiumDriver@cd8b] at /opt/homebrew/lib/node_modules/appium/node_modules/express/lib/router/index.js:286:9 [AppiumDriver@cd8b] at Function.process_params (/opt/homebrew/lib/node_modules/appium/node_modules/express/lib/router/index.js:346:12) [AppiumDriver@cd8b] at next (/opt/homebrew/lib/node_modules/appium/node_modules/express/lib/router/index.js:280:10) [AppiumDriver@cd8b] at Layer.handle [as handle_request] (/opt/homebrew/lib/node_modules/appium/node_modules/express/lib/router/layer.js:91:12) [AppiumDriver@cd8b] at trim_prefix (/opt/homebrew/lib/node_modules/appium/node_modules/express/lib/router/index.js:328:13) [AppiumDriver@cd8b] at /opt/homebrew/lib/node_modules/appium/node_modules/express/lib/router/index.js:286:9 [AppiumDriver@cd8b] at Function.process_params (/opt/homebrew/lib/node_modules/appium/node_modules/express/lib/router/index.js:346:12) [AppiumDriver@cd8b] at next (/opt/homebrew/lib/node_modules/appium/node_modules/express/lib/router/index.js:280:10) [HTTP] <-- GET /session/4becb82c-c5e6-4fae-9f1d-00e298a34ad4/timeouts 404 1 ms - 3244 [HTTP]OpenQA.Selenium.Appium.Service.Exceptions.AppiumServerHasNotBeenStartedLocallyException : The local appium server has not been started. The given Node.js executable: /opt/homebrew/bin/node Arguments: "/opt/homebrew/lib/node_modules/appium/build/lib/main.js" --port "53618" --address "127.0.0.1". Time 120000 ms for the service starting has been expired! TearDown : System.NullReferenceException : Object reference not set to an instance of an object.

Environment

Link to Appium Logs

No response

Further Information

No response

Dor-bl commented 7 months ago

@ishuvir what appium dotnet client version are you using?

ishuvir commented 7 months ago

@Dor-bl > @ishuvir what appium dotnet client version are you using?

dotnet --info .NET SDK: Version: 7.0.313 Commit: 7b4633fafd

Runtime Environment: OS Name: Mac OS X OS Version: 14.3 OS Platform: Darwin RID: osx-arm64 Base Path: /usr/local/share/dotnet/sdk/7.0.313/

Host: Version: 7.0.16 Architecture: arm64 Commit: 567edafe61

.NET SDKs installed: 6.0.415 [/usr/local/share/dotnet/sdk] 6.0.417 [/usr/local/share/dotnet/sdk] 6.0.418 [/usr/local/share/dotnet/sdk] 6.0.419 [/usr/local/share/dotnet/sdk] 7.0.309 [/usr/local/share/dotnet/sdk] 7.0.311 [/usr/local/share/dotnet/sdk] 7.0.312 [/usr/local/share/dotnet/sdk] 7.0.313 [/usr/local/share/dotnet/sdk]

.NET runtimes installed: Microsoft.AspNetCore.App 6.0.23 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App] Microsoft.AspNetCore.App 6.0.25 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App] Microsoft.AspNetCore.App 6.0.26 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App] Microsoft.AspNetCore.App 6.0.27 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App] Microsoft.AspNetCore.App 7.0.12 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App] Microsoft.AspNetCore.App 7.0.14 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App] Microsoft.AspNetCore.App 7.0.15 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App] Microsoft.AspNetCore.App 7.0.16 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App] Microsoft.NETCore.App 6.0.23 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App] Microsoft.NETCore.App 6.0.25 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App] Microsoft.NETCore.App 6.0.26 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App] Microsoft.NETCore.App 6.0.27 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App] Microsoft.NETCore.App 7.0.12 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App] Microsoft.NETCore.App 7.0.14 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App] Microsoft.NETCore.App 7.0.15 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App] Microsoft.NETCore.App 7.0.16 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]

Other architectures found: None

Environment variables: Not set

global.json file: Not found

Learn more: https://aka.ms/dotnet/info

Download .NET: https://aka.ms/dotnet/download

I just checked in terminal now, will this help?

Dor-bl commented 7 months ago

I meant the appium client version. Are you using the latest version of 5.x?

ishuvir commented 7 months ago

@Dor-bl You mean by appium.webdriver -4.4.5

I have shared all version which i am using .

Screenshot 2024-03-07 at 09 30 10
Dor-bl commented 7 months ago

Appium 4.4.5 is no longer supported and will definitely not work with appium server 2.x

ishuvir commented 7 months ago

@Dor-bl thanks for letting me know , so what is workaround for version ? or something i can do to make it work ?

Dor-bl commented 7 months ago

Update to 5.x RC. You will have some breaking changes to fix. You can read the Readme in the repository. If something is not clear, let me know and we can add more info to the docs

Dor-bl commented 5 months ago

@ishuvir Any updates regarding this issue? were you able to successfully migrate to 5.x?