0

Below is the code I wrote in Java to perform a test which involves switching to windows handles.

package com.Practice;

import java.util.Iterator;
import java.util.Set;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

public class Assignment4 {

    public static void main(String[] args) {
        System.setProperty("webdriver.chrome.driver", "C:\\Users\\vikas\\Downloads\\chromedriver.exe");

        WebDriver driver = new ChromeDriver();
        driver.manage().window().maximize();
        driver.get("http://the-internet.herokuapp.com/");
        driver.findElement(By.xpath("(//div[@id='content']/ul)/li[33]")).click();
        driver.findElement(By.cssSelector("a[href*='windows']")).click();
        Set<String> windows = driver.getWindowHandles();
        Iterator<String> it = windows.iterator();
        String parentId = it.next();
        String childId = it.next();
        driver.switchTo().window(childId);
        System.out.println(driver.findElement(By.xpath("//h3[contains(text(),'New Window')]")).getText());
        driver.switchTo().window(parentId);
        System.out.println(driver.findElement(By.xpath("//div[@id='content']/div/h3")).getText());
    }

}

To the best of my knowledge I assume this code is correct but still I am facing error. I am facing no such element exception.

Exception in thread "main" java.util.NoSuchElementException
    at java.base/java.util.LinkedHashMap$LinkedHashIterator.nextNode(LinkedHashMap.java:760)
    at java.base/java.util.LinkedHashMap$LinkedKeyIterator.next(LinkedHashMap.java:780)
    at com.Practice.Assignment4.main(Assignment4.java:22)
undetected Selenium
  • 183,867
  • 41
  • 278
  • 352
SriVikas1
  • 1
  • 1

1 Answers1

0

This error message...

Exception in thread "main" java.util.NoSuchElementException

...implies that NoSuchElementException was raised as no such element can be found using the Locator Strategy.

To identify the element with text as Multiple Windows you can use either of the following Locator Strategies:

  • xpath:

    driver.findElement(By.xpath("(//div[@id='content']//ul//li[33]"))
    

Using a more canonical approach you can use:

  • linkText:

    driver.findElement(By.linkText("Multiple Windows"));
    
  • cssSelector:

    driver.findElement(By.cssSelector("a[href='/windows']"));
    
  • xpath:

    driver.findElement(By.xpath("//a[text()='Multiple Windows']"));
    
undetected Selenium
  • 183,867
  • 41
  • 278
  • 352