2014-10-16 2 views
0

У меня есть блок:HtmlElements находит 3 элемента вместо только один в блоке при поиске с помощью XPath

@Block(@FindBy(xpath = "//tr[contains(@class,'bg-success')]")) 
public class ShareContentRowBlock extends HtmlElement { 

    @FindBy(xpath = "//h3[@class='fileName']/span/a") 
    private TextBlock contentNameText; 

    public String getContentName() { 
     return contentNameText.getText(); 
    } 

    .... // some other elements and methods 
} 

Я описал страницу:

public class DocumentLibraryPage extends SitePage { 

    private List<ShareContentRowBlock> shareContentRowBlocks; 

    ..... 

    public ShareContentRowBlock getShareContentRowBlock(String name){ 
     for (ShareContentRowBlock conentRowBlock: shareContentRowBlocks){ 
      if(name.equals(conentRowBlock.getContentName())){ 
       return conentRowBlock; 
      } 
     } 
     return null; 
    } 
} 

Когда я пытаюсь получить элемент, он возвращает не совсем элемент, который я хочу видеть.

У меня есть HTML с элементами дерева:

html 
     h3.fileName 
     span 
      a 
     h3.fileName 
     span 
      a 
     table.bg-success 
     h3.fileName 
      span 
       a 

Я хочу, чтобы получить элемент <a> внутри таблицы, но он возвращает все 3 <a> элементы. Когда я пытаюсь отлаживать, он действительно находит все элементы <a> с игнорированием родительского блока xpath.

Что случилось с этим? Мне нужно сменить селектор или описать блок другим способом?

ответ

1

Запуск локатора xpath с «//» означает абсолютное положение блока. Для проведения соответствующего поиска вы должны начать его с «.»:

 Смежные вопросы

  • Нет связанных вопросов^_^