Java Selenium没有这样的元素:无法找到元素

时间:2018-10-17 17:38:17

标签: java selenium-webdriver

我正在尝试使用“ T恤”的linkText查找Web元素。我首先找到父类,然后尝试找到该元素。我打印了其父标签名称,它可以按预期工作。但是我无法使用linkText或partialLinkText找到该元素。该网页为http://automationpractice.com/index.php

    WebElement tshirts_tab = driver.findElement(By.cssSelector(".sf-menu.clearfix.menu-content.sf-js-enabled.sf-arrows"));
    System.out.println(tshirts_tab.getTagName());
    WebElement tshirts = tshirts_tab.findElement(By.partialLinkText("T-shirts"));

    System.out.println(tshirts.getAttribute("href"));

html inspect

1 个答案:

答案 0 :(得分:0)

尝试

WebElement tshirts = tshirts_tab.findElement(By.partialLinkText("T-SHIRTS"));

WebElement tshirts = tshirts_tab.findElement(By.linkText("T-SHIRTS"));

根据WebDriver规范https://www.w3.org/TR/webdriver1/#link-text

“让渲染的文本为通过调用元素的获取元素文本返回的值。”

在您的情况下,您可以看到通过链接文本查找的元素具有样式"text-transform: uppercase;",实际上它会将文本 render 转换为大写。

您可以使用其他定位符找到该元素,然后调用.getText()方法,并看到它实际上返回了“ T-SHIRTS”。因此,在调用linkText时还应提供“ T-SHIRTS”(呈现的文本)作为参数。