🌟 Day 13 of My 100 Days QA Challenge 🌟 Topic: Setting Up Selenium WebDriver – Step by Step 🧰 Getting your automation environment ready is the first real step toward writing tests. Here's how you can set up Selenium WebDriver in Java the right way: 🛠️ Step-by-Step Setup Guide 1. Add Selenium Dependency Use Maven/Gradle to include Selenium in your project. For Maven (pom.xml): <dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-java</artifactId> <version>4.35.0</version> <!-- latest stable version as of now --> </dependency> You can check the current version at the Selenium Downloads page. Selenium 2. Manage WebDriver Binaries You need browser-specific drivers (ChromeDriver, GeckoDriver, etc.). Instead of manually downloading them, you can use WebDriverManager (Java library) to handle this for you automatically. import io.github.bonigarcia.wdm.WebDriverManager; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; public class WebDriverSetup { public static void main(String[] args) { WebDriverManager.chromedriver().setup(); // Automatically handles driver WebDriver driver = new ChromeDriver(); driver.get("https://example.com"); System.out.println("Title: " + driver.getTitle()); driver.quit(); } } Note: With newer Selenium releases, Selenium Manager is being integrated to manage drivers internally. Selenium+1 3. Launching Browser & Running a Test Create WebDriver instance (Chrome, Firefox, etc.) Configure options (window size, headless mode, timeouts) Use driver.get(url) to navigate Perform actions (click, sendKeys, etc.) Assert results Close driver with driver.quit() 4. Best Practices & Tips Always use the latest matching versions of Selenium & WebDriverManager Clean driver cache if version mismatches arise (especially when browser updates) Use explicit waits instead of Thread.sleep() Run tests headlessly in CI environments Organize your setup logic (e.g. in a Base class) for reuse 👉 Tomorrow’s post: Day 14 – Writing First Selenium Script #100DaysQAChallenge #Selenium #AutomationTesting #WebDriverSetup #Java #WebDriverManager #SeleniumManager #TestAutomation #QualityAssurance #SoftwareTesting #TestingJourney #QALearning #ManualToAutomation #TestingTools #TesterLife #CodingForQA
Setting Up Selenium WebDriver in Java: A Step-by-Step Guide
More Relevant Posts
-
🌐 Day 14 of SDET JOURNEY — Getting Started with Selenium WebDriver (Your First Step into Test Automation) You’ve learned Java basics, OOPs, exception handling, and file management — now it’s time to put that knowledge into action 💥 Welcome to Selenium WebDriver, the backbone of web automation. 🧩 What Is Selenium WebDriver? Selenium WebDriver is a browser automation tool that allows you to: Open a browser (Chrome, Edge, Firefox) Interact with web elements (click, type, validate) Run end-to-end automated test cases Think of it as your virtual tester — doing exactly what a human would do, but faster ⚡ ⚙️ Basic Setup You’ll need: 1. Java SDK 2. Selenium WebDriver JAR (or via Maven) 3. Browser Driver (like ChromeDriver) 🧱 Maven dependency: <dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-java</artifactId> <version>4.23.0</version> </dependency> 💻 Your First Selenium Script import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; public class FirstTest { public static void main(String[] args) { WebDriver driver = new ChromeDriver(); driver.get("https://www.google.com"); System.out.println("Page Title: " + driver.getTitle()); driver.quit(); } } ✅ Opens Chrome ✅ Navigates to Google ✅ Prints the page title ✅ Closes browser Simple, clean, and your first automation victory 🎉 💬 Why It Matters for an SDET As an automation engineer, Selenium WebDriver is your hands-on weapon: Used for UI testing in almost every company Forms the base for frameworks (TestNG, Cucumber, POM) Works with Java, Python, JS, C#, Kotlin, etc. Once you master it, transitioning to other tools (like Playwright or Cypress) becomes effortless. 🧠 Pro Tip 💡 Always use the latest WebDriver matching your browser version. Use driver.manage().window().maximize() and implicit waits early on to stabilize your scripts. 🧭 Mini Task for You ✅ Install ChromeDriver ✅ Write a Java program to: Launch Chrome Navigate to any website Print the title Close browser That’s it. You’ve officially started hands-on automation. #SDET #Selenium #AutomationTesting #TestAutomation #QACommunity #SoftwareTesting #JavaForTesters #LearningJourney #TestingTools #CareerGrowth #WebDriver #QATraining
To view or add a comment, sign in
-
💻 "Which Selenium Automation framework should I learn first?" That was the question one of my team member asked me few months back. He was overwhelmed. POM, Data-Driven, TestNG, Cucumber... so many names. So many paths. I smiled and said, "Let me tell you a story from when I started with Java Selenium..." 🔹 At first, I wrote tests without any framework. It was messy. Hard to maintain. Every small change meant rewriting tons of code. Then I discovered TestNG — my first breakthrough. It gave me structure. Annotations like @Test, @BeforeMethod made my life easier. Test reports? Handled beautifully. 🔹 But then came the Data-Driven Framework I needed to test login with 50 different users. Writing 50 test methods? No way. That’s when I learned to feed data from Excel using Apache POI and @DataProvider. 🔹 Next came the Keyword-Driven Framework This one opened doors for collaboration. Non-technical team members could define test steps like: 📄 Click | id=loginBtn 📄 EnterText | name=username | testuser The Java code would interpret and act. It was magic. 🔹 I started combining things. 👉 TestNG + Data-driven + Reusable modules. That's when I unknowingly built a Hybrid Framework. It gave me power and flexibility. I could scale my tests across modules and features. 🔹 Then I hit a wall: maintainability. So I adopted the Page Object Model (POM). Every page got its own class. Elements were managed centrally. Even after UI changes, I only needed to update one place. 🔹 Later, I discovered BDD with Cucumber This one wasn’t just for testers. Now, product owners could write test cases in plain English: Gherkin Given user is on login page When user enters valid credentials Then user should land on homepage Business + Tech finally spoke the same language. 🚀 Today, we use a combination: ✅ TestNG for execution ✅ POM for structure ✅ Data-driven for flexibility ✅ Cucumber for collaboration ✅ Extent Reports for beautiful results ✅ Maven & Jenkins to automate everything 💡 My advice? Don’t rush to learn all frameworks at once. Start with TestNG + POM, then layer others as your needs grow. Because frameworks are not about “coolness” they’re about solving real problems. What framework did you start with? Drop your story. Let’s learn together. #Selenium #Java #AutomationTesting #TestNG #POM #Cucumber #Frameworks #LearningJourney #QACommunity #SoftwareTesting #RanjitAppukutti
To view or add a comment, sign in
-
💻 "Which Selenium Automation framework should I learn first?" That was the question one of my team member asked me few months back. POM, Data-Driven, TestNG, Cucumber... so many names. So many paths. For the first time when they hear these terminologies, they feel super complex... I smiled and said, "Let me tell you a story from when I started with Java Selenium..." 🔹 At first, I wrote tests without any framework. It was messy. Hard to maintain. Every small change meant rewriting tons of code. Then I discovered TestNG, my first breakthrough. It gave me structure. Annotations like @Test, @BeforeMethod made my life easier. Test reports? Handled beautifully. 🔹 But then came the Data-Driven Framework I needed to test login with 50 different users. Writing 50 test methods? No way. That’s when I learned to feed data from Excel using Apache POI and @DataProvider. 🔹 Next came the Keyword-Driven Framework This one opened doors for collaboration. Non-technical team members could define test steps like: 📄 Click | id=loginBtn 📄 EnterText | name=username | testuser The Java code would interpret and act. It was magic. 🔹 I started combining things. 👉 TestNG + Data-driven + Reusable modules. That's when I unknowingly built a Hybrid Framework. It gave me power and flexibility. I could scale my tests across modules and features. 🔹 Then I hit a wall: maintainability. So I adopted the Page Object Model (POM). Every page got its own class. Elements were managed centrally. Even after UI changes, I only needed to update one place. 🔹 Later, I discovered BDD with Cucumber This one wasn’t just for testers. Now, product owners could write test cases in plain English: Gherkin Given user is on login page When user enters valid credentials Then user should land on homepage Business + Tech finally spoke the same language. 🚀 Today, we use a combination: ✅ TestNG for execution ✅ POM for structure ✅ Data-driven for flexibility ✅ Cucumber for collaboration ✅ Extent Reports for beautiful results ✅ Maven manages builds and dependencies, while Jenkins runs them automatically in your CI/CD pipeline. 💡 My advice? Don’t rush to learn all frameworks at once. Start with TestNG + POM, then layer others as your needs grow. What framework did you start with? Drop your story. Let’s learn together. #Selenium #Java #AutomationTesting #TestNG #POM #Cucumber #Frameworks #LearningJourney #QACommunity #SoftwareTesting #RanjitAppukutti
To view or add a comment, sign in
-
Troubleshooting Selenium Installation Error in a QA Project During one of our automation setups, we faced a critical blocker: Selenium WebDriver would not initialize correctly, and the automation suite kept crashing before tests even started. ⚠️ The Problem Error message: java.lang.IllegalStateException: The path to the driver executable must be set by the webdriver.chrome.driver system property Some team members also got: SessionNotCreatedException: This version of ChromeDriver only supports Chrome version XX Tests failed across multiple machines, making it impossible to proceed. 🔍 Root Cause The issue was caused by mismatched versions of ChromeDriver and Google Chrome, combined with missing environment path variables for WebDriver. 🛠 Fixes Applied Downloaded the correct ChromeDriver version matching the installed Chrome browser. Added the driver path to the code: System.setProperty("webdriver.chrome.driver", "C:\\Drivers\\chromedriver.exe"); For cross-platform use, added ChromeDriver to the system PATH variable so it didn’t need hardcoding. Implemented WebDriverManager (by Boni García) in Maven to handle drivers dynamically: WebDriverManager.chromedriver().setup(); WebDriver driver = new ChromeDriver(); Created a driver compatibility check script that runs before the suite to ensure the right driver-browser combo. ✅ The Outcome Eliminated all driver-related crashes across the QA team. Enabled smooth execution in CI/CD pipelines (Jenkins) without manual driver updates. Saved hours of debugging for new team members — automation now works “out of the box.” 💡 Lesson Learned: In Selenium, installation/setup errors are often version mismatches. Using tools like WebDriverManager makes automation projects far more stable and scalable.
To view or add a comment, sign in
-
What is POM? POM (Page Object Model) is a design pattern used in test automation mainly with Selenium. It helps you separate test logic from UI elements, making your code cleaner, reusable, and easier to maintain. Why we use POM • To avoid duplicate locators and messy test scripts. • To make updates easy if one element changes, you fix it in one place only. • To keep tests readable and maintainable. Different Ways to Implement POM 1. Without PageFactory (classic way) –using By locators and driver.findElement(). 2. With PageFactory – using @FindBy annotations for cleaner code. Example: Login Page (with PageFactory) import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.support.FindBy; import org.openqa.selenium.support.PageFactory; public class LoginPage { WebDriver driver; // Locators @FindBy(id = "username") WebElement usernameField; @FindBy(id = "password") WebElement passwordField; @FindBy(id = "loginBtn") WebElement loginButton; // Constructor public LoginPage(WebDriver driver) { this.driver = driver; PageFactory.initElements(driver, this); } // Actions public void login(String username, String password) { usernameField.sendKeys(username); passwordField.sendKeys(password); loginButton.click(); } } Usage in Test Class import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.testng.annotations.Test; public class LoginTest { @Test public void verifyLogin() { WebDriver driver = new ChromeDriver(); driver.get("https://example.com/login"); LoginPage loginPage = new LoginPage(driver); loginPage.login("admin", "password123"); driver.quit(); } } Bottom line POM = Clean structure + Reusable locators + Easy maintenance. It’s the backbone of any good Selenium automation framework. #Selenium #POM #TestAutomation #SDET #Java
To view or add a comment, sign in
-
🚀 15 Most Important Selenium Terminologies Every Tester MUST Know! If you’re preparing for QA interviews or leveling up your Selenium WebDriver skills — mastering these is a game-changer 👇 🧩 1. WebDriver The brain of Selenium — automates browsers and executes user-like actions. 🌐 2. WebElement Represents a single element on a web page (button, input box, etc.). 🎯 3. Locators Used to find elements — ID, Name, XPath, CSS Selector, and more. ⏳ 4. Waits Control execution timing. Includes Implicit, Explicit, and Fluent Waits. 🖱️ 5. Actions Class Handles complex user gestures like drag-drop, hover, and double-click. 🧱 6. Page Object Model (POM) A design pattern that separates UI elements from test logic — clean and reusable. 🧪 7. TestNG / JUnit Frameworks that help manage test cases, assertions, and reports. 🔄 8. Navigation Commands Move across pages — back, forward, refresh, or open new URLs. ⚙️ 9. Selenium Grid Runs tests in parallel across multiple browsers and OS for faster results. 🧰 10. Desired capabilities / Options Used to define browser-specific settings (like headless, incognito, or custom profiles). ⚠️ 11. Alert Handling Manages browser pop-ups — accept, dismiss, or read alert text. 🪟 12. Frame and Window Handling Switches between multiple windows or frames within a web page. 💻 13. JavaScriptExecutor Executes custom JavaScript commands directly in the browser when standard methods fall short. 👻 14. Headless Browser Testing Runs tests in the background without launching the browser window — great for CI/CD speed. ⏱️ 15. Implicit vs Explicit Wait Crucial for synchronization — Implicit is global Explicit waits for specific conditions. Happy diwali everyone 🎇 🪔 <~~~~~~#𝐀𝐮𝐭𝐨𝐦𝐚𝐭𝐢𝐨𝐧 #𝐓𝐞𝐬𝐭𝐢𝐧𝐠~~~~~~> 🚩 𝐒𝐞𝐥𝐞𝐧𝐢𝐮𝐦 𝐰𝐢𝐭𝐡 𝐉𝐚𝐯𝐚 𝐀𝐮𝐭𝐨𝐦𝐚𝐭𝐢𝐨𝐧 𝐓𝐞𝐬𝐭𝐢𝐧𝐠 ✅ - 𝐓𝐫𝐚𝐢𝐧𝐢𝐧𝐠 𝐒𝐭𝐚𝐫𝐭𝐢𝐧𝐠 𝐒𝐨𝐨𝐧. 𝐑𝐞𝐠𝐢𝐬𝐭𝐞𝐫 𝐍𝐨𝐰 𝐟𝐨𝐫 𝐅𝐫𝐞𝐞 𝐃𝐞𝐦𝐨 𝐂𝐥𝐚𝐬𝐬𝐞𝐬 :-https://lnkd.in/dJkPZXTV 𝐎𝐑 𝐉𝐨𝐢𝐧 𝐖𝐡𝐚𝐭𝐬𝐀𝐩𝐩 𝐆𝐫𝐨𝐮𝐩 𝐟𝐨𝐫 𝐟𝐮𝐫𝐭𝐡𝐞𝐫 𝐮𝐩𝐝𝐚𝐭𝐞𝐬:-https://lnkd.in/d-VND7Bj #Selenium #AutomationTesting #SoftwareTesting #TestAutomation #QATesting #QualityAssurance #TestingCommunity #SDET #WebDriver #TestNG #JUnit #TechCareers #CodingForTesters #AutomationEngineer #LearnSelenium
To view or add a comment, sign in
-
-
Hello connections, Sharing some insights from my experience as an SDET. Selenium automation in Java is powerful—but exceptions are inevitable. Common Selenium Exceptions & Solutions 1. NoSuchElementException – Element not found Solution: Use explicit waits Java: WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10)); WebElement element = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("username"))); element.click(); 2. StaleElementReferenceException – Element reference stale Solution: Retry locating before interacting Java: int attempts = 0; while(attempts < 3){ try { driver.findElement(By.id("submit")).click(); break; } catch(StaleElementReferenceException e){ attempts++; } } 3. ElementNotInteractableException – Element not ready Solution: Wait until clickable Java: wait.until(ExpectedConditions.elementToBeClickable(By.id("submit"))).click(); 4. TimeoutException – Condition not met Solution: Increase wait or review condition Java: wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("username"))); 5. ElementClickInterceptedException – Click blocked Solution: Wait or use JavaScript click Java: WebElement button = driver.findElement(By.id("submit")); ((JavascriptExecutor) driver).executeScript("arguments[0].click();", button); 6. NoSuchFrameException – Frame unavailable Solution: Retry switching Java: int attempts = 0; while(attempts < 3){ try { driver.switchTo().frame(driver.findElement(By.id("frameId"))); break; } catch(NoSuchFrameException e){ attempts++; } } 7. NoSuchWindowException – Window handle missing Solution: Retry switching Java: int attempts = 0; while(attempts < 3){ try { for(String handle : driver.getWindowHandles()){ driver.switchTo().window(handle); if(driver.getTitle().equals("Dashboard")) break; } break; } catch(NoSuchWindowException e){ attempts++; } } 8. InvalidSelectorException – Incorrect locator Solution: Test XPath/CSS in DevTools 9. WebDriverException – Generic driver/browser failure Solution: Check compatibility & restart session 10. InvalidElementStateException – Action not allowed Solution: Ensure element is editable before sending keys 11. MoveTargetOutOfBoundsException – Element outside viewport Solution: Scroll into view Java: WebElement element = driver.findElement(By.id("submit")); ((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView(true);", element); element.click(); Handling exceptions isn’t just about fixing failures—it’s about building stable, maintainable automation frameworks. How do you handle flaky Selenium exceptions in your automation projects? #Selenium #Java #AutomationTesting #QA #SDET #TestAutomation #QualityAssurance #SoftwareTesting #TechCareers
To view or add a comment, sign in
-
What is POM? POM (Page Object Model) is a design pattern used in test automation mainly with Selenium. It helps you separate test logic from UI elements, making your code cleaner, reusable, and easier to maintain. Why we use POM • To avoid duplicate locators and messy test scripts. • To make updates easy if one element changes, you fix it in one place only. • To keep tests readable and maintainable. Different Ways to Implement POM 1. Without PageFactory (classic way) –using By locators and driver.findElement(). 2. With PageFactory – using @FindBy annotations for cleaner code. Example: Login Page (with PageFactory) import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.support.FindBy; import org.openqa.selenium.support.PageFactory; public class LoginPage { WebDriver driver; // Locators @FindBy(id = "username") WebElement usernameField; @FindBy(id = "password") WebElement passwordField; @FindBy(id = "loginBtn") WebElement loginButton; // Constructor public LoginPage(WebDriver driver) { this.driver = driver; PageFactory.initElements(driver, this); } // Actions public void login(String username, String password) { usernameField.sendKeys(username); passwordField.sendKeys(password); loginButton.click(); } } Usage in Test Class import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.testng.annotations.Test; public class LoginTest { @Test public void verifyLogin() { WebDriver driver = new ChromeDriver(); driver.get("https://example.com/login"); LoginPage loginPage = new LoginPage(driver); loginPage.login("admin", "password123"); driver.quit(); } } Bottom line POM = Clean structure + Reusable locators + Easy maintenance. It’s the backbone of any good Selenium automation framework. =================================================== 🚩 𝐒𝐞𝐥𝐞𝐧𝐢𝐮𝐦 𝐰𝐢𝐭𝐡 𝐉𝐚𝐯𝐚 𝐀𝐮𝐭𝐨𝐦𝐚𝐭𝐢𝐨𝐧 𝐓𝐞𝐬𝐭𝐢𝐧𝐠 ✅ - Training Starting Soon! Register now for further Updates:- Google form:https://lnkd.in/est6yhzA OR Join WhatsApp group for future updates:https://lnkd.in/epGNUW6y Follow Ashwini Belgaonkar for more job updates
To view or add a comment, sign in
-
Simplify Selenium Waits Using ExpectedConditions (Java) ``` WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10)); WebElement element = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("userName"))); element.sendKeys("JohnDoe"); ``` One of the most underrated skills in Selenium automation is mastering **explicit waits**. While newcomers rely on `Thread.sleep()` (which pauses execution blindly), seasoned engineers use `WebDriverWait` and `ExpectedConditions` for intelligent timing. In the above code, `ExpectedConditions.visibilityOfElementLocated()` ensures the element is both present in the DOM and visible on screen before performing any action. This approach reduces flaky tests and improves overall suite stability. A small but valuable enhancement in recent Selenium versions (Selenium 4+) is the shift from the old constructor `new WebDriverWait(WebDriver, long)` to the more readable `Duration` API. It’s a subtle syntax improvement, but it aligns Selenium better with modern Java practices. **Pro Tip:** Combine explicit waits with concise custom conditions using lambda expressions: ``` wait.until(driver -> driver.findElement(By.id("submitBtn")).isEnabled()); ``` This simple pattern allows more control and flexibility compared to pre-defined conditions. As automation engineers, we often chase advanced tools, but refining fundamentals like intelligent waiting strategies can make your suite significantly more reliable and cleaner. 💬 How do you handle sync issues in your Selenium tests? Share your approach below!
To view or add a comment, sign in
-
💻 "Which Selenium Automation framework should I learn first?" That was the question one of my team member asked me few months back. He was overwhelmed. POM, Data-Driven, TestNG, Cucumber... so many names. So many paths. I smiled and said, "Let me tell you a story from when I started with Java Selenium..." 🔹 At first, I wrote tests without any framework. It was messy. Hard to maintain. Every small change meant rewriting tons of code. Then I discovered TestNG — my first breakthrough. It gave me structure. Annotations like @Test, @BeforeMethod made my life easier. Test reports? Handled beautifully. 🔹 But then came the Data-Driven Framework I needed to test login with 50 different users. Writing 50 test methods? No way. That’s when I learned to feed data from Excel using Apache POI and @DataProvider. 🔹 Next came the Keyword-Driven Framework This one opened doors for collaboration. Non-technical team members could define test steps like: 📄 Click | id=loginBtn 📄 EnterText | name=username | testuser The Java code would interpret and act. It was magic. 🔹 I started combining things. 👉 TestNG + Data-driven + Reusable modules. That's when I unknowingly built a Hybrid Framework. It gave me power and flexibility. I could scale my tests across modules and features. 🔹 Then I hit a wall: maintainability. So I adopted the Page Object Model (POM). Every page got its own class. Elements were managed centrally. Even after UI changes, I only needed to update one place. 🔹 Later, I discovered BDD with Cucumber This one wasn’t just for testers. Now, product owners could write test cases in plain English: Gherkin Given user is on login page When user enters valid credentials Then user should land on homepage Business + Tech finally spoke the same language. 🚀 Today, we use a combination: ✅ TestNG for execution ✅ POM for structure ✅ Data-driven for flexibility ✅ Cucumber for collaboration ✅ Extent Reports for beautiful results ✅ Maven & Jenkins to automate everything 💡 My advice? Don’t rush to learn all frameworks at once. Start with TestNG + POM, then layer others as your needs grow. Because frameworks are not about “coolness” they’re about solving real problems.
To view or add a comment, sign in
Explore content categories
- Career
- Productivity
- Finance
- Soft Skills & Emotional Intelligence
- Project Management
- Education
- Technology
- Leadership
- Ecommerce
- User Experience
- Recruitment & HR
- Customer Experience
- Real Estate
- Marketing
- Sales
- Retail & Merchandising
- Science
- Supply Chain Management
- Future Of Work
- Consulting
- Writing
- Economics
- Artificial Intelligence
- Employee Experience
- Workplace Trends
- Fundraising
- Networking
- Corporate Social Responsibility
- Negotiation
- Communication
- Engineering
- Hospitality & Tourism
- Business Strategy
- Change Management
- Organizational Culture
- Design
- Innovation
- Event Planning
- Training & Development