Monday, 24 January 2022

Automation using Selenium


<dependencies>
        <!--  https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java  -->
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>4.1.0</version>
        </dependency>
        <!--  https://mvnrepository.com/artifact/io.github.bonigarcia/webdrivermanager  -->
        <dependency>
            <groupId>io.github.bonigarcia</groupId>
            <artifactId>webdrivermanager</artifactId>
            <version>5.0.3</version>
        </dependency>
    </dependencies>
System.setProperty("webdriver.chrome.driver", "drivers/chromedriver");//https://chromedriver.chromium.org/downloads
        or
WebDriverManager.chromedriver().driverVersion("97.0.4692.71").setup();//https://mvnrepository.com/artifact/io.github.bonigarcia/webdrivermanager
        

        ChromeOptions chromeOptions = new ChromeOptions();
        chromeOptions.setPageLoadStrategy(PageLoadStrategy.EAGER);
       WebDriver driver = new ChromeDriver(chromeOptions);
        driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(10));
        driver.manage().timeouts().scriptTimeout(Duration.ofMinutes(2));
        driver.manage().timeouts().pageLoadTimeout(Duration.ofSeconds(100));


        driver.get(BASE_URL);
        driver.manage().window().maximize();
        driver.findElement(By.name("keyword")).sendKeys(PRODUCT_NAME, Keys.ENTER);
        driver.findElement(By.xpath("//input[@placeholder='Enter your pincode']")).sendKeys(pincode);
        driver.findElement(By.xpath("//button[@class='pincode-check']")).click();
        for (int i = 0; i < 10; i++) {
            driver.findElement(By.xpath("//body")).sendKeys(Keys.ARROW_DOWN); //mandatory scroll to find element
        }
        WebElement productAnchorTag = driver.findElement(By.partialLinkText(PRODUCT_NAME));
        String productLink = productAnchorTag.getAttribute("href");
        driver.get(productLink);
        driver.findElement(By.id("add-cart-button-id")).click();
        WebElement proceedToCheckout = driver.findElement(By.cssSelector("a[class='btn marR5']"));
        proceedToCheckout.click();
        String snapdealWindow = driver.getWindowHandle();
        WebDriverWait webDriverWait = new WebDriverWait(driver, 30);
        WebElement loginFB = driver.findElement(By.id("fblogin"));
        loginFB.click();
        Set<String> driverWindowHandles = driver.getWindowHandles();
        for (String windowHandle : driverWindowHandles) {
            if(!driver.getWindowHandle().equals(windowHandle)){
                driver.switchTo().window(windowHandle);
                driver.findElement(By.id("email")).sendKeys(FB_USER_NAME);
                driver.findElement(By.id("pass")).sendKeys(FB_PASSWORD, Keys.ENTER);
                break;
            }
        }
        driver.switchTo().window(snapdealWindow);
        WebElement makePayment = webDriverWait.until(
                ExpectedConditions.visibilityOfElementLocated(By.id("make-payment"))
        );
        if(makePayment.isDisplayed()) {
            driver.findElement(By.id("make-payment")).click();
        }
        driver.close();
        driver.quit();


Appium