appium / java-client

Java language binding for writing Appium Tests, conforms to W3C WebDriver Protocol
Apache License 2.0
1.19k stars 752 forks source link

org.openqa.selenium.SessionNotCreatedException: Could not start a new session. Possible causes are invalid address of the remote server or browser start-up failure. #2164

Open KritikaSahare1611 opened 2 months ago

KritikaSahare1611 commented 2 months ago

Description

getting org.openqa.selenium.SessionNotCreatedException: Could not start a new session. Possible causes are invalid address of the remote server or browser start-up failure.

Environment

getting error : org.openqa.selenium.SessionNotCreatedException: Could not start a new session. Possible causes are invalid address of the remote server or browser start-up failure. Host info: host: 'TECHNOLOGY-KRIT', ip: '10.50.1.66' at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:536) at io.appium.java_client.AppiumDriver.startSession(AppiumDriver.java:268) at org.openqa.selenium.remote.RemoteWebDriver.(RemoteWebDriver.java:161) at io.appium.java_client.AppiumDriver.(AppiumDriver.java:90) at io.appium.java_client.AppiumDriver.(AppiumDriver.java:102) at io.appium.java_client.android.AndroidDriver.(AndroidDriver.java:109) at com.healthkart.hkAutomation.browser.BrowserFactory.launchBrowser(BrowserFactory.java:29) at com.healthkart.extentReportUtil.ExtentReportingBaseUtil.setup(ExtentReportingBaseUtil.java:282) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:568) at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:133) at org.testng.internal.MethodInvocationHelper.invokeMethodConsideringTimeout(MethodInvocationHelper.java:62) at org.testng.internal.ConfigInvoker.invokeConfigurationMethod(ConfigInvoker.java:385) at org.testng.internal.ConfigInvoker.invokeConfigurations(ConfigInvoker.java:321) at org.testng.internal.TestInvoker.runConfigMethods(TestInvoker.java:700) at org.testng.internal.TestInvoker.invokeMethod(TestInvoker.java:527) at org.testng.internal.TestInvoker.invokeTestMethod(TestInvoker.java:173) at org.testng.internal.MethodRunner.runInSequence(MethodRunner.java:46) at org.testng.internal.TestInvoker$MethodInvocationAgent.invoke(TestInvoker.java:824) at org.testng.internal.TestInvoker.invokeTestMethods(TestInvoker.java:146) at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:146) at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:128)

I am using following pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

4.0.0
<groupId>com.healthkart</groupId>
<artifactId>hkAutomation</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>

<name>hkAutomation</name>
<url>https://healthkart.com</url>

<properties>
    <!--suppress UnresolvedMavenProperty -->
    <reportsDirectory>./test-output/${timestamp}</reportsDirectory>
    <!-- <testFailureIgnore>true</testFailureIgnore> -->
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
</properties>

<profiles>
    <profile>
        <id>Base configuration</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <build>
            <defaultGoal>install</defaultGoal>
            <plugins>

                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>2.19.1</version>
                    <inherited>true</inherited>
                    <executions>
                        <execution>
                            <phase>test</phase>
                            <goals>
                                <goal>test</goal>
                            </goals>
                        </execution>
                    </executions>
                    <configuration>
                        <suiteXmlFiles>
                            <!--suppress UnresolvedMavenProperty -->
                            <suiteXmlFile>${suiteXmlFile}</suiteXmlFile>
                        </suiteXmlFiles>
                        <!-- <testErrorIgnore>true</testErrorIgnore> <testFailureIgnore>true</testFailureIgnore> -->
                    </configuration>
                </plugin>

                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-report-plugin</artifactId>
                    <version>2.20.1</version>
                    <configuration>
                        <showSuccess>true</showSuccess>
                    </configuration>
                </plugin>

            </plugins>
        </build>
    </profile>
</profiles>

<dependencies>

    <dependency>
        <groupId>io.appium</groupId>
        <artifactId>java-client</artifactId>
        <version>9.1.0</version>
    </dependency>

    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-java</artifactId>
        <version>4.17.0</version>
    </dependency>

    <dependency>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-report-plugin</artifactId>
        <version>2.20.1</version>
        <type>maven-plugin</type>
    </dependency>

    <!-- <dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-java</artifactId> 
        <version>3.8.1</version> </dependency> -->

    <dependency>
        <groupId>org.testng</groupId>
        <artifactId>testng</artifactId>
        <version>7.4.0</version>
    </dependency>

    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml</artifactId>
        <version>3.9</version>
    </dependency>

    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.6</version>
    </dependency>

    <dependency>
        <groupId>com.aventstack</groupId>
        <artifactId>extentreports</artifactId>
        <version>5.0.8</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.7.25</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/io.appium/java-client -->

    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-io</artifactId>
        <version>1.3.2</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/com.googlecode.json-simple/json-simple -->
    <dependency>
        <groupId>com.googlecode.json-simple</groupId>
        <artifactId>json-simple</artifactId>
        <version>1.1.1</version>
    </dependency>

    <dependency>
        <groupId>commons-lang</groupId>
        <artifactId>commons-lang</artifactId>
        <version>2.2</version>
    </dependency>

    <dependency>
        <groupId>org.bytedeco.javacpp-presets</groupId>
        <artifactId>tesseract</artifactId>
        <version>3.04.01-1.3</version>
    </dependency>

    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-csv</artifactId>
        <version>1.5</version>
    </dependency>

    <dependency>
        <groupId>io.rest-assured</groupId>
        <artifactId>rest-assured</artifactId>
        <version>4.3.3</version>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>io.rest-assured</groupId>
        <artifactId>json-schema-validator</artifactId>
        <version>4.3.3</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.12.1</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/javax.xml.bind/jaxb-api -->
    <dependency>
        <groupId>javax.xml.bind</groupId>
        <artifactId>jaxb-api</artifactId>
        <version>2.4.0-b180830.0359</version>
    </dependency>

    <dependency>
        <groupId>io.github.java-diff-utils</groupId>
        <artifactId>java-diff-utils</artifactId>
        <version>4.9</version>
    </dependency>

    <dependency>
        <groupId>org.mongodb</groupId>
        <artifactId>mongo-java-driver</artifactId>
        <version>3.12.2</version>
    </dependency>

<dependency>  
<groupId>net.sourceforge.tess4j</groupId>  
<artifactId>tess4j</artifactId>  
<version>3.2.1</version>  

com.github.romankh3 image-comparison 4.4.0
  <dependency>
<groupId>com.mashape.unirest</groupId>
<artifactId>unirest-java</artifactId>
<version>1.4.9</version>

org.mongodb mongo-java-driver 3.12.12
</dependencies>

aroras25 commented 1 month ago

Hi @KritikaSahare1611 Were you able to find a solution to this ?

KritikaSahare1611 commented 1 month ago

@aroras25 you can use

import java.util.HashMap; import java.util.Map; import java.util.logging.Level;

import org.openqa.selenium.chrome.ChromeOptions; import org.openqa.selenium.logging.LogType; import org.openqa.selenium.logging.LoggingPreferences; public class ChromeOptionsCapability {

private ChromeOptionsCapability() {
}

private static ThreadLocal<String> dr = new ThreadLocal<>();

public static String getMethodName() {
    return dr.get();
}

public static void setMethodName(String methodName) {
    dr.set(methodName);
}

public static void unload() {
    dr.remove();
}

public static ChromeOptions setChromeOptions()
{
    return new ChromeOptions().addArguments("--disable-notifications")
   .addArguments("disable-infobars").addArguments("start-maximized").addArguments("--remote-allow-origins=*");
}

public static ChromeOptions setChromeOptionsSelenoid()
{
    HashMap<String, Object> chromePrefs = new HashMap<String, Object>();
    chromePrefs.put("intl.accept_languages", "hi");
    LoggingPreferences logPrefs = new LoggingPreferences();
    logPrefs.enable(LogType.BROWSER, Level.OFF);
    logPrefs.enable(LogType.PERFORMANCE, Level.ALL);
    ChromeOptions ops = new ChromeOptions();
    ops.addArguments("--disable-notifications")
    .addArguments("disable-infobars")
    .addArguments("start-maximized")
    .addArguments("--no-sandbox")
    .addArguments("--disable-setuid-sandbox")
    .addArguments("disable-dev-shm-usage")
    .addArguments("--remote-allow-origins=*");
    ops.setExperimentalOption("prefs", chromePrefs);
    ops.setCapability("goog:loggingPrefs", logPrefs);
    ops.setCapability("browserVersion", "latest");
    ops.setCapability("browserName", "chrome");

    Map<Object, Object> options = new HashMap<>();
    options.put("enableVNC", true);
    options.put("enableVideo", false);
    options.put("sessionTimeout", "10m");
    options.put("name", getMethodName());

// options.put("download.default_directory", System.getProperty("user.dir")); // options.put("download.prompt_for_download", false); // options.put("plugins.plugins_disabled", new String[] { "Chrome PDF Viewer" }); // options.put("plugins.always_open_pdf_externally", true); //
// ops.setExperimentalOption("prefs", options); ops.setCapability("selenoid:options", options); return ops; } }