Bird
Raised Fist0
Selenium Javatesting~5 mins

Base page class pattern in Selenium Java - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is the purpose of the Base Page Class in Selenium?
The Base Page Class holds common methods and elements shared by all page classes, promoting code reuse and easier maintenance.
Click to reveal answer
beginner
Which of these is a typical method you would find in a Base Page Class?
Methods like 'waitForElement', 'clickElement', or 'getPageTitle' that are used across multiple pages.
Click to reveal answer
intermediate
Why should locators be private in a Base Page Class?
To encapsulate the page details and prevent direct access, ensuring changes affect only the page class and not test code.
Click to reveal answer
intermediate
How does the Base Page Class improve test code readability?
By abstracting common actions into clear methods, tests read like user actions rather than low-level Selenium commands.
Click to reveal answer
intermediate
What is a common practice when creating a Base Page Class constructor in Selenium Java?
Passing the WebDriver instance to the constructor and initializing page elements using PageFactory or similar.
Click to reveal answer
What is the main benefit of using a Base Page Class in Selenium?
ATo reduce code duplication across page classes
BTo write tests without WebDriver
CTo avoid using locators
DTo run tests faster
Where should the WebDriver instance be stored in the Base Page Class?
AIn the test class only
BAs a local variable in each method
CAs a private instance variable
DIn a static global variable
Which design pattern does the Base Page Class support?
APage Object Model
BFactory Pattern
CSingleton Pattern
DObserver Pattern
What is a good practice for locator variables in the Base Page Class?
AMake them public for easy access
BKeep them private and final
CDeclare them inside test methods
DAvoid using locators
How can you initialize web elements in the Base Page Class?
ABy using static variables
BBy calling driver.findElement every time
CBy storing elements in test classes
DUsing PageFactory.initElements(driver, this)
Explain the role and benefits of the Base Page Class pattern in Selenium test automation.
Think about how you avoid repeating code and keep tests clean.
You got /5 concepts.
    Describe how you would implement a Base Page Class constructor in Selenium Java and why.
    Focus on how the driver is shared and elements are prepared.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main purpose of a BasePage class in Selenium Java testing?
      easy
      A. To define the main method for running tests
      B. To store test data for different test cases
      C. To group common web actions and avoid code repetition across page classes
      D. To handle database connections during tests

      Solution

      1. Step 1: Understand the role of BasePage

        The BasePage class contains common methods like click, type, and wait that many page classes use.
      2. Step 2: Identify the benefit

        By grouping these common actions, BasePage helps avoid repeating the same code in every page class.
      3. Final Answer:

        To group common web actions and avoid code repetition across page classes -> Option C
      4. Quick Check:

        BasePage groups common actions = A [OK]
      Hint: BasePage holds shared actions to reuse in all pages [OK]
      Common Mistakes:
      • Confusing BasePage with test data storage
      • Thinking BasePage runs tests directly
      • Mixing BasePage with database handling
      2. Which of the following is the correct way to declare a BasePage class constructor that accepts a WebDriver instance in Java?
      easy
      A. public BasePage(WebDriver driver) { this.driver = driver; }
      B. public void BasePage(WebDriver driver) { this.driver = driver; }
      C. BasePage(WebDriver driver) { driver = this.driver; }
      D. public BasePage() { WebDriver driver; }

      Solution

      1. Step 1: Identify correct constructor syntax

        In Java, constructors have no return type and match the class name exactly.
      2. Step 2: Check parameter assignment

        The constructor should assign the passed driver to the class field using this.driver = driver;.
      3. Final Answer:

        public BasePage(WebDriver driver) { this.driver = driver; } -> Option A
      4. Quick Check:

        Constructor no return + this.driver = driver [OK]
      Hint: Constructor has no return type and uses this.driver = driver [OK]
      Common Mistakes:
      • Adding void return type to constructor
      • Reversing assignment order
      • Declaring driver inside constructor without class field
      3. Given the following BasePage method, what will be the output if the element is not found within 5 seconds?
      public void clickElement(By locator) {
        WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(5));
        wait.until(ExpectedConditions.elementToBeClickable(locator)).click();
        System.out.println("Clicked successfully");
      }
      medium
      A. Prints 'Clicked successfully' after clicking the element
      B. Prints 'Clicked successfully' immediately without waiting
      C. Throws NoSuchElementException and prints 'Clicked successfully'
      D. Throws TimeoutException and does not print anything

      Solution

      1. Step 1: Understand WebDriverWait behavior

        The wait.until waits up to 5 seconds for the element to be clickable.
      2. Step 2: Outcome if element not found

        If the element is not clickable within 5 seconds, wait.until throws a TimeoutException and the click and print statements are skipped.
      3. Final Answer:

        Throws TimeoutException and does not print anything -> Option D
      4. Quick Check:

        Wait fails = TimeoutException, no print [OK]
      Hint: Wait throws TimeoutException if element not clickable in time [OK]
      Common Mistakes:
      • Assuming print runs even if element not found
      • Confusing TimeoutException with NoSuchElementException
      • Thinking click happens immediately without wait
      4. Identify the error in this BasePage method and how to fix it:
      public void enterText(By locator, String text) {
        WebElement element = driver.findElement(locator);
        element.sendKeys();
      }
      medium
      A. sendKeys() is missing the text argument; fix by adding sendKeys(text)
      B. findElement should be replaced with findElements
      C. Method should return boolean indicating success
      D. Locator type By is incorrect; use String instead

      Solution

      1. Step 1: Check sendKeys usage

        The sendKeys method requires a String argument to input text.
      2. Step 2: Fix the method call

        Change element.sendKeys(); to element.sendKeys(text); to send the provided text.
      3. Final Answer:

        sendKeys() is missing the text argument; fix by adding sendKeys(text) -> Option A
      4. Quick Check:

        sendKeys needs text argument [OK]
      Hint: sendKeys always needs the text argument [OK]
      Common Mistakes:
      • Calling sendKeys without arguments
      • Using findElements instead of findElement for single element
      • Changing locator type incorrectly
      5. You have a BasePage with a method public boolean isElementVisible(By locator) that returns true if element is visible. How would you use this method in a LoginPage class to verify the login button is visible before clicking it?
      hard
      A. if (isElementVisible()) { clickElement(loginButtonLocator); }
      B. if (isElementVisible(loginButtonLocator)) { clickElement(loginButtonLocator); }
      C. clickElement(loginButtonLocator); isElementVisible(loginButtonLocator);
      D. isElementVisible(loginButtonLocator); clickElement();

      Solution

      1. Step 1: Use isElementVisible with locator argument

        The method requires a By locator to check visibility, so pass loginButtonLocator.
      2. Step 2: Conditionally click if visible

        Use an if statement to call clickElement(loginButtonLocator) only if the element is visible.
      3. Final Answer:

        if (isElementVisible(loginButtonLocator)) { clickElement(loginButtonLocator); } -> Option B
      4. Quick Check:

        Check visibility with locator before click [OK]
      Hint: Check visibility with locator before clicking [OK]
      Common Mistakes:
      • Calling isElementVisible without locator argument
      • Clicking without checking visibility
      • Calling clickElement without locator
      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