硒,无法获得元素

时间:2016-03-18 08:05:24

标签: java selenium xpath

我需要通过selenium从网页的元素中读取文本。这是页面的一部分:

<div id="pDFEA208F010FEDCF6C6F0D5B5DDC97F3154" class="NPC_collapsable NPC_widget NPC_complete NPC_boxselect" data-boxtype="TOGGLE_BUTTONS" data-collapsed="true" style="margin-top: 20px;">
  <header class="NPC_widget-header NPC_collapsing-title NPC_statusIcon">
    <h3 class="NPC_parameterText">Baugröße</h3>
    <span class="NPC_ellipsis NPC_unit"></span>
    <span class="NPC_ellipsis NPC_statusIcon" style="color:#0091dc!important"></span>
    <span class="NPC_ellipsis NPC_selectedParameterValue" style="font-weight: bold;">6</span>
    <span class="NPC_hint"></span>
  </header>

我可以通过<h3>Baugröße</h3>“寻址”页面的部分,我需要得到的是最后一个但是一个跨度的6。 我有:

    WebElement gruppe = driver.findElement(By.xpath("//header/h3[text()='" + propertyName + "']"));
    System.out.println("Group: " + gruppe.getText() + " <");

    // Element in den sichtbaren Bereich(Focus) der Seite bewegen
    ((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView(true);", gruppe);

    WebElement t1 = driver.findElement(By.xpath("//header/h3[text()='" + propertyName + "']/../span[@class='NPC_ellipsis NPC_selectedParameterValue']"));
    System.out.println("Try 1: >" + t1.getText() + "<");

    WebElement set = gruppe.findElement(
            By.xpath(".//following-sibling::*/span[@class='NPC_ellipsis NPC_selectedParameterValue']"));
    System.out.println("set: >" + set.getText() + "<");

这给了我组“Baugröße”,但不是“6”。我明白了:

Group: Baugröße <
Try 1: ><
org.openqa.selenium.NoSuchElementException: Unable to locate element: {"method":"xpath","selector":".//following-sibling::*/span[@class='NPC_ellipsis NPC_selectedParameterValue']"} Command duration or timeout: 68 milliseconds

我如何获得这个span元素?

2 个答案:

答案 0 :(得分:0)

gruppe这是h3的对象,当你尝试使用gruppe找到元素定位器时,它将搜索元素作为标记h3的子元素,并且没有H3的子元素,因此它给出了未找到的异常元素。

现在要获得值6,你应该使用如下代码的驱动程序对象:

 WebElement set = driver.findElement(
        By.xpath("//span[contains(@class, 'NPC_ellipsis NPC_selectedParameterValue')]"));
 System.out.println("set: >" + set.getText() + "<");

答案 1 :(得分:0)

在我看来,可以从group标签开始表单hr。 同样正确的是,您要查找的 span h3 标记,但不是任何级别的子级。因此.//following-sibling::*/是错误的 尝试:following-sibling::span[@class='NPC_ellipsis NPC_selectedParameterValue']

但是我不明白为什么 t1 没有正确的元素(span),所以其他东西似乎是错误的。