【问题标题】:No element found message for findElement(By.xpath("//div[@data-index='1']找不到元素的消息 findElement(By.xpath("//div[@data-index='1']
【发布时间】:2021-05-11 06:56:36
【问题描述】:

我正在使用以下代码对以下场景进行测试

  • 使用 Java 语言为 amazon.com 创建 Selenium Web 浏览器测试,并提供以下详细信息:
  • 搜索 Nikon 并按价格从高到低对结果进行排序。
  • 选择第二个产品,点击查看详情。
public void test() {
        System.setProperty("webdriver.chrome.driver","/Users/dimuthugunarathna/browserdrivers/chromedriver 3");
        ChromeDriver driver  = new ChromeDriver();
        driver.manage().window().maximize();
        driver.get("http://amazon.com/");
        driver.findElement(By.cssSelector("#twotabsearchtextbox")).sendKeys("Nikon");
        
        driver.findElement(By.cssSelector("#nav-search-submit-button")).click();
        
        driver.findElement(By.cssSelector("#a-autoid-0-announce[data-action='a-dropdown-button']")).click();
        
        driver.findElement(By.cssSelector("[aria-labelledby='s-result-sort-select_2']")).click();

        WebElement parent = driver.findElement(By.xpath("//div[contains(@class, 's-main-slot')]"));
        System.out.println(parent.getAttribute("class"));
        
        WebElement child = parent.findElement(By.xpath("//div[@data-index='1']"));
    
        System.out.println(child.getAttribute("class"));
        
        WebElement childLink =child.findElement(By.cssSelector(".a-link-normal"));
        childLink.click();

WebElement child = parent.findElement(By.xpath("//div[@data-index='1']"));总是导致找不到元素错误。有人可以帮我吗?

【问题讨论】:

  • 尝试将 .// 添加到该 xpath 并打印出父母的 innerhtml 以查看该元素是否具有该 xpath。

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


【解决方案1】:

当你试图找到一个父元素的子元素时,你应该使用'.'用于 xpath 来指示当前节点是指示:

例如:

WebElement child = parent.findElement(By.xpath(".//div[@data-index='1']"));

这将搜索

//div[contains(@class, 's-main-slot')]//div[@data-index='1']

如果你不添加'.'那么搜索将从根节点开始。相等的 xpath 将是

//div[@data-index='1']

但是这个限制只适用于xpath

WebElement child = parent.findElement(By.class("new"));

将等同于:

//div[contains(@class, 's-main-slot')]//*[@class='new']

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    • 2013-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多