1

I'm doing my task to automate a specific website's performance by using Appium. I'm testing the iPadOS(iOS 14.x and above) and the website has a new tab feature when a button is clicked. Now, the problem is that when I tried to use getWindowHandles and sorts of that nothing happens. Here's my code:

String url = "https://demoqa.com/browser-windows"; driver.get(url);

    try {
        System.out.println(1321);
        Thread.sleep(5000);
        System.out.println(driver.getTitle()); 
        String currentHandle = driver.getWindowHandle(); 
        
        System.out.println(driver.findElement(By.xpath("//*[@id=\"tabButton\"]")).isDisplayed());
        
        driver.findElement(By.xpath("//*[@id=\"tabButton\"]")).click();
        System.out.println(driver.getTitle()); 
        Thread.sleep(5000);

        System.out.println(driver.getTitle());
        Thread.sleep(5000);
         //getting all the handles currently available
        Set<String> handles=driver.getWindowHandles();
        Thread.sleep(5000);
        System.out.println(handles.size());
        for(String actual: handles)
        {
            
         if(!actual.equalsIgnoreCase(currentHandle))
         {
             //switching to the opened tab
             driver.switchTo().window(actual); 
         }
        }

Output: 1321 ToolsQA true ToolsQA ToolsQA 1

Juvin DC
  • 13
  • 3

1 Answers1

0

The moment you do this :

driver.findElement(By.xpath("//*[@id=\"tabButton\"]")).click();

you need to switch to the new tab/window

Code :

ArrayList<String> handles = new ArrayList<String> (driver.getWindowHandles());
System.out.println(driver.findElement(By.xpath("//*[@id=\"tabButton\"]")).isDisplayed());
driver.findElement(By.xpath("//*[@id=\"tabButton\"]")).click();
driver.switchTo().window(handles.get(1));
System.out.println(driver.getTitle()); 

Update 1 :

driver.get("https://demoqa.com/browser-windows");
WebDriverWait wait = new WebDriverWait(driver, 10);
String currentHandle = driver.getWindowHandle();
System.out.println(driver.findElement(By.xpath("//*[@id=\"tabButton\"]")).isDisplayed());
driver.findElement(By.xpath("//*[@id=\"tabButton\"]")).click();
Thread.sleep(2000);
ArrayList<String> handles = new ArrayList<String> (driver.getWindowHandles());
driver.switchTo().window(handles.get(1));
System.out.println("Switched");
System.out.println(wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("sampleHeading"))).getText());
cruisepandey
  • 28,520
  • 6
  • 20
  • 38