javaselenium-webdrivergradleselenium-chromedriverchrome-options

addArguments(java.lang.String... arguments) method of ChromeOptions is giving error


For the below code of setting chromeoptions using addArguments() method is giving following error

cannot access AbstractDriverOptions
options.addArguments("--disable-web-security");
       ^
class file for org.openqa.selenium.remote.AbstractDriverOptions not found

Code:

ChromeOptions options = new ChromeOptions();

options.addArguments("--disable-web-security");
options.addArguments("--headless");
options.addArguments("--window-size=2880,1800");
options.addArguments("--start-fullscreen");
options.addArguments("--disable-popup-blocking");
options.addArguments("--disable-notifications");
...
...

This code was working fine with older version of Selenium dependency but now i upgraded all my dependencies to new versions for some reasons and it's not working

Selenium Dependencies:

 implementation 'org.seleniumhq.selenium:selenium-chrome-driver:4.0.0-rc-1'
 implementation 'org.seleniumhq.selenium:selenium-support:4.0.0-rc-1'

build.gradle:

plugins {
id 'org.springframework.boot' version '2.5.4'
id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id 'java'
id 'org.ajoberstar.grgit' version '3.1.1'
id "com.gorylenko.gradle-git-properties" version "2.3.1"
}

group = 'com.leadmi'
if (project.hasProperty('appVersion')) {
    version = "${appVersion}"
} else {
    version = "${version}-BRANCH-${grgit.branch.current().name}-SNAPSHOT"
}
sourceCompatibility = '1.8'

configurations {
    compileOnly {
        extendsFrom annotationProcessor
    }
}
ext {
    set('springCloudVersion', "2020.0.3")
}

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    implementation 'org.springframework.boot:spring-boot-starter-mail'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'org.springframework.boot:spring-boot-starter-webflux'
    compileOnly 'org.projectlombok:lombok'
    runtimeOnly 'org.postgresql:postgresql'
    annotationProcessor 'org.projectlombok:lombok'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
    testImplementation 'io.projectreactor:reactor-test'
    implementation 'net.logstash.logback:logstash-logback-encoder:6.6'
    testImplementation 'org.springdoc:springdoc-openapi-webmvc-core:1.5.10'
    implementation 'com.amazonaws:aws-java-sdk-s3:1.12.60'
    implementation 'com.googlecode.json-simple:json-simple:1.1.1'
    implementation 'commons-io:commons-io:2.11.0'
    implementation 'org.apache.commons:commons-lang3:3.12.0'
    implementation 'com.google.guava:guava:30.1.1-jre'
    implementation 'io.springfox:springfox-boot-starter:3.0.0'
    implementation 'org.springframework.boot:spring-boot-starter-actuator'
    testImplementation 'org.springframework.kafka:spring-kafka-test'
    
    implementation 'org.seleniumhq.selenium:selenium-chrome-driver:4.0.0-rc-1'
    implementation 'org.seleniumhq.selenium:selenium-support:4.0.0-rc-1'

    implementation 'org.apache.httpcomponents:httpclient:4.5.13'
    implementation 'org.apache.commons:commons-collections4:4.4'
    implementation 'me.xdrop:fuzzywuzzy:1.3.1'
    implementation 'org.jsoup:jsoup:1.14.2'
    implementation 'us.codecraft:xsoup:0.3.2'
    implementation 'org.springframework.kafka:spring-kafka'
    testImplementation 'org.springframework.kafka:spring-kafka-test'

    implementation 'org.springframework.cloud:spring-cloud-starter-consul-config'
    implementation 'org.springframework.cloud:spring-cloud-starter-consul-discovery'
}

dependencyManagement {
    imports {
        mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
    }
}

test {
    useJUnitPlatform()
}

Java version I'm using:

openjdk version "1.8.0_292"
OpenJDK Runtime Environment (build 1.8.0_292-8u292-b10-0ubuntu1~18.04-b10)
OpenJDK 64-Bit Server VM (build 25.292-b10, mixed mode)

Chrome Version:

Google Chrome 93.0.4577.63

Chrome Driver Version:

93.0.4577.15

Solution

  • You miss the following dependency

    implementation 'org.seleniumhq.selenium:selenium-remote-driver:4.0.0-rc-1'
    

    As stated in the official documentation, generally we can just use selenium-java dependency

    implementation 'org.seleniumhq.selenium:selenium-java:4.0.0-rc-1'
    

    instead of

    implementation 'org.seleniumhq.selenium:selenium-chrome-driver:4.0.0-rc-1'
    implementation 'org.seleniumhq.selenium:selenium-support:4.0.0-rc-1'
    implementation 'org.seleniumhq.selenium:selenium-remote-driver:4.0.0-rc-1'
    

    Reference:
    Unable to set maven dependencies for RemoteWebDriver