我有个街区:
@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。
它有什么问题?我需要更改选择器,还是以其他方式描述块?
答案 0 :(得分:1)
使用&#34; // &#34;启动xpath定位器表示绝对块位置。要进行相对搜索,您应该使用&#34; 启动它。&#34;:
@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
}