package com.lambdatest.automation;
import java.lang.reflect.Method;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.HashMap;
import java.util.concurrent.TimeUnit;
 
import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.testng.ITestContext;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.BeforeSuite;
import org.testng.annotations.Test;
import org.openqa.selenium.chrome.ChromeOptions;
import java.time.Duration;
 
public class HiddenElementsDemo {


    public String username = "LT_USERNAME";
    public String accesskey = "LT_ACCESS_KEY";


    public static RemoteWebDriver driver;
    public String gridURL = "@hub.lambdatest.com/wd/hub";
    boolean status = false;
     
    @BeforeMethod
    public void setup(Method m, ITestContext ctx) throws MalformedURLException {


        String hub = "@hub.lambdatest.com/wd/hub";
 
        ChromeOptions browserOptions = new ChromeOptions();
        browserOptions.setPlatformName("Windows 11");
        browserOptions.setBrowserVersion("124.0");
        HashMap<String, Object> ltOptions = new HashMap<String, Object>();
        ltOptions.put("username", "LT_USERNAME");
        ltOptions.put("accessKey", "LT_ACCESS_KEY");
        ltOptions.put("project", "Untitled");
        ltOptions.put("w3c", true);
        ltOptions.put("plugin", "java-testNG");
        browserOptions.setCapability("LT:Options", ltOptions);
        try {
            driver = new RemoteWebDriver(new URL("https://" + username + ":" + accesskey + gridURL), browserOptions);
        } catch (MalformedURLException e) {
            System.out.println("Invalid grid URL");
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
 
    }
 
    @Test
    public void basicTest() throws InterruptedException {
        // navigating to the application under test
        driver.get("http://sripriyakulkarni.com/");
 
        // maximize window
        driver.manage().window().maximize();
 
         // explicit wait - to wait for the link to be click-able
        WebDriverWait wait =new WebDriverWait(driver, Duration.ofSeconds(30));
        wait.until(ExpectedConditions
        .visibilityOfElementLocated(By.xpath("//span[normalize-space()='Automation Practice']"))).click();
 
        // navigating to section of hidden element
        driver.findElement(By.xpath("//span[normalize-space()='Automation Practice']")).click();
        Thread.sleep(1000);
 
        // Clicking on the Hide button
        driver.findElement(By.xpath("//input[@id='hide-textbox']")).click();
        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
 
        JavascriptExecutor jse = (JavascriptExecutor) driver;
 
        WebElement element = driver.findElement(By.xpath("//input[@id='displayed-text']"));
        ((JavascriptExecutor) driver).executeScript("arguments[0].setAttribute('style','visibility:visible;');",
                element);
 
        jse.executeScript("document.getElementById('displayed-text').value='LambdaTest';");
 
        driver.findElement(By.id("show-textbox")).click();
 
    }
 
    @AfterMethod
    public void tearDown() {
 
        driver.quit();
    }
}