Bird
Raised Fist0
Selenium Javatesting~15 mins

Maven project creation in Selenium Java - Build an Automation Script

Choose your learning style10 modes available
Create a Maven project and verify Selenium dependency setup
Preconditions (3)
Step 1: Open terminal or command prompt
Step 2: Run command: mvn archetype:generate -DgroupId=com.example -DartifactId=selenium-test -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
Step 3: Navigate to the created project folder selenium-test
Step 4: Open the pom.xml file in the project
Step 5: Add Selenium Java dependency inside <dependencies> tag:
Step 6: <dependency>
Step 7: <groupId>org.seleniumhq.selenium</groupId>
Step 8: <artifactId>selenium-java</artifactId>
Step 9: <version>4.10.0</version>
Step 10: </dependency>
Step 11: Save the pom.xml file
Step 12: Run command: mvn clean compile to download dependencies and compile the project
Step 13: Verify that the build is successful and no errors appear
✅ Expected Result: Maven project is created with Selenium Java dependency added. The project compiles successfully with Selenium libraries downloaded.
Automation Requirements - JUnit 5 with Selenium WebDriver
Assertions Needed:
Verify project directory exists
Verify pom.xml contains Selenium dependency
Verify mvn clean compile command runs successfully
Best Practices:
Use explicit assertions to check file contents
Use ProcessBuilder or similar to run Maven commands and capture output
Structure test with setup and teardown if needed
Automated Solution
Selenium Java
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
import java.io.*;
import java.nio.file.*;

public class MavenProjectCreationTest {

    private final Path projectPath = Path.of("selenium-test");
    private final Path pomFile = projectPath.resolve("pom.xml");

    @Test
    public void testMavenProjectCreationAndDependency() throws IOException, InterruptedException {
        // Step 1: Run mvn archetype:generate command
        ProcessBuilder generateBuilder = new ProcessBuilder(
            "mvn", "archetype:generate",
            "-DgroupId=com.example",
            "-DartifactId=selenium-test",
            "-DarchetypeArtifactId=maven-archetype-quickstart",
            "-DinteractiveMode=false"
        );
        generateBuilder.redirectErrorStream(true);
        Process generateProcess = generateBuilder.start();
        String generateOutput = new String(generateProcess.getInputStream().readAllBytes());
        int generateExitCode = generateProcess.waitFor();
        assertEquals(0, generateExitCode, "Maven archetype generation failed");

        // Step 2: Verify project directory exists
        assertTrue(Files.exists(projectPath) && Files.isDirectory(projectPath), "Project directory does not exist");

        // Step 3: Add Selenium dependency to pom.xml
        String pomContent = Files.readString(pomFile);
        String seleniumDependency = "<dependency>\n" +
            "    <groupId>org.seleniumhq.selenium</groupId>\n" +
            "    <artifactId>selenium-java</artifactId>\n" +
            "    <version>4.10.0</version>\n" +
            "  </dependency>";

        if (!pomContent.contains("selenium-java")) {
            int insertPos = pomContent.indexOf("</dependencies>");
            if (insertPos == -1) {
                // If no dependencies tag, add one before </project>
                insertPos = pomContent.indexOf("</project>");
                String dependenciesBlock = "  <dependencies>\n" + seleniumDependency + "\n  </dependencies>\n";
                pomContent = pomContent.substring(0, insertPos) + dependenciesBlock + pomContent.substring(insertPos);
            } else {
                pomContent = pomContent.substring(0, insertPos) + seleniumDependency + "\n" + pomContent.substring(insertPos);
            }
            Files.writeString(pomFile, pomContent);
        }

        // Step 4: Verify pom.xml contains Selenium dependency
        String updatedPom = Files.readString(pomFile);
        assertTrue(updatedPom.contains("selenium-java"), "Selenium dependency not found in pom.xml");

        // Step 5: Run mvn clean compile
        ProcessBuilder compileBuilder = new ProcessBuilder("mvn", "clean", "compile");
        compileBuilder.directory(projectPath.toFile());
        compileBuilder.redirectErrorStream(true);
        Process compileProcess = compileBuilder.start();
        String compileOutput = new String(compileProcess.getInputStream().readAllBytes());
        int compileExitCode = compileProcess.waitFor();

        assertEquals(0, compileExitCode, "Maven compile failed. Output:\n" + compileOutput);
    }
}

This test automates the manual steps to create a Maven project with Selenium dependency.

First, it runs the Maven archetype generate command using ProcessBuilder and checks the exit code to ensure success.

Then it verifies the project folder exists.

Next, it reads the pom.xml file and adds the Selenium dependency if missing, then verifies the dependency is present.

Finally, it runs mvn clean compile inside the project folder and asserts the build succeeds.

This approach uses explicit assertions, runs commands programmatically, and manipulates files safely, following best practices.

Common Mistakes - 4 Pitfalls
Hardcoding absolute file paths
Not checking process exit codes
Editing pom.xml as plain text without checking structure
Ignoring output streams of processes
Bonus Challenge

Now add data-driven testing to create Maven projects with 3 different groupId and artifactId combinations

Show Hint

Practice

(1/5)
1. What is the main purpose of using Maven when creating a Selenium Java project?
easy
A. To run Selenium tests only on Firefox browser
B. To automatically create a standard project structure and manage dependencies
C. To write Selenium test scripts manually without any setup
D. To replace Java programming language with XML

Solution

  1. Step 1: Understand Maven's role in project setup

    Maven helps by creating a standard folder structure and managing libraries needed for Selenium tests.
  2. Step 2: Compare other options

    Options A, B, and D describe incorrect or unrelated functions of Maven.
  3. Final Answer:

    To automatically create a standard project structure and manage dependencies -> Option B
  4. Quick Check:

    Maven manages structure and dependencies = C [OK]
Hint: Remember: Maven sets up structure and handles libraries [OK]
Common Mistakes:
  • Thinking Maven only runs tests
  • Confusing Maven with a browser
  • Believing Maven replaces Java code
2. Which command correctly creates a new Maven project with the default directory structure?
easy
A. mvn selenium:start
B. mvn clean install
C. mvn archetype:generate
D. mvn compile test

Solution

  1. Step 1: Identify the command for creating a new project

    The command mvn archetype:generate is used to create a new Maven project with standard folders.
  2. Step 2: Understand other commands

    mvn clean install builds the project, mvn selenium:start is invalid, and mvn compile test compiles and tests but does not create a project.
  3. Final Answer:

    mvn archetype:generate -> Option C
  4. Quick Check:

    Project creation command = mvn archetype:generate [OK]
Hint: Use 'archetype:generate' to start new Maven projects [OK]
Common Mistakes:
  • Using build commands instead of project creation
  • Typing invalid Maven commands
  • Confusing compile/test with project setup
3. Given the following Maven command run in a terminal:
mvn archetype:generate -DgroupId=com.example -DartifactId=seleniumtest -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

What will be the result?
medium
A. The command runs tests but does not create any project
B. The command will fail because 'interactiveMode' is misspelled
C. Maven will only compile existing code without creating a project
D. A new Maven project named 'seleniumtest' with group 'com.example' is created automatically

Solution

  1. Step 1: Analyze the command parameters

    The command uses archetype:generate with groupId, artifactId, archetypeArtifactId, and disables interactive mode, which creates a new project automatically.
  2. Step 2: Check for errors

    The parameter -DinteractiveMode=false is correctly spelled and disables prompts, so the command succeeds.
  3. Final Answer:

    A new Maven project named 'seleniumtest' with group 'com.example' is created automatically -> Option D
  4. Quick Check:

    Correct parameters create project automatically = D [OK]
Hint: Use -DinteractiveMode=false for automatic project creation [OK]
Common Mistakes:
  • Misspelling parameter names
  • Confusing compile with project creation
  • Expecting tests to run on project creation
4. You ran mvn archetype:generate but got an error: Could not find artifact org.apache.maven.archetypes:maven-archetype-quickstart. What is the likely cause and fix?
medium
A. No internet connection; connect to internet and rerun the command
B. Wrong Java version; downgrade Java to version 7
C. Maven is not installed; install Maven first
D. Project folder already exists; delete it before running

Solution

  1. Step 1: Understand the error message

    The error means Maven cannot download the archetype artifact from its repository, usually due to no internet connection.
  2. Step 2: Identify the fix

    Connecting to the internet allows Maven to download required files and run the command successfully.
  3. Final Answer:

    No internet connection; connect to internet and rerun the command -> Option A
  4. Quick Check:

    Artifact download error = no internet [OK]
Hint: Check internet if Maven can't download archetypes [OK]
Common Mistakes:
  • Assuming Java version causes this error
  • Thinking Maven is not installed when it is
  • Deleting folders unnecessarily
5. You want to create a Maven Selenium Java project that includes the Selenium WebDriver dependency automatically. Which step should you do after creating the project with mvn archetype:generate?
hard
A. Add the Selenium WebDriver dependency XML snippet inside the <dependencies> section of pom.xml
B. Write Selenium test code before adding any dependencies
C. Run mvn clean install without modifying pom.xml
D. Delete the src folder and create it manually

Solution

  1. Step 1: Understand Maven dependency management

    After project creation, you must add Selenium WebDriver dependency inside pom.xml to download required libraries.
  2. Step 2: Why other options are incorrect

    Writing code before adding dependencies causes errors; running build without dependencies fails; deleting src folder breaks structure.
  3. Final Answer:

    Add the Selenium WebDriver dependency XML snippet inside the <dependencies> section of pom.xml -> Option A
  4. Quick Check:

    Add dependencies in pom.xml before coding = A [OK]
Hint: Always add dependencies in pom.xml before coding [OK]
Common Mistakes:
  • Skipping dependency addition
  • Running build without dependencies
  • Altering project folders manually
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard