【问题标题】:Exception in thread "main" java.util.NoSuchElementException errorusing Selenium and Java使用 Selenium 和 Java 的线程“主”java.util.NoSuchElementException 中的异常错误
【发布时间】:2021-05-23 21:05:35
【问题描述】:

以下是我用 Java 编写的代码,用于执行涉及切换到 Windows 句柄的测试。

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());
    }

}

据我所知,我认为这段代码是正确的,但我仍然面临错误。我没有遇到这样的元素异常。

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)

【问题讨论】:

    标签: java selenium-webdriver xpath css-selectors linktext


    【解决方案1】:

    此错误消息...

    Exception in thread "main" java.util.NoSuchElementException
    

    ...暗示NoSuchElementException 被提出,因为使用Locator Strategy 找不到这样的元素。

    要将带有文本的元素标识为多个窗口,您可以使用以下任一Locator Strategies:

    • xpath:

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

    您可以使用更规范的方法:

    • linkText:

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

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

      driver.findElement(By.xpath("//a[text()='Multiple Windows']"));
      

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-02
      • 1970-01-01
      • 1970-01-01
      • 2015-04-15
      • 1970-01-01
      相关资源
      最近更新 更多