如何根据div中的其他元素编写嵌套的xpath xpression?

时间:2015-04-23 09:41:37

标签: java selenium xpath nested fluentlenium

我需要使用xpath找到一个按钮,并想尝试使用嵌套的xpath xpression。

我一直在使用表达式

 @FindBy(xpath="//*/button[contains(text(),'FOO')]")

在代码中的其他位置查找其他按钮的实例,到目前为止这样可以正常工作。但是我的代码是动态创建“添加”的多个实例。页面上的按钮,有时这些添加按钮是不可见的

是否可以编写一个Xpath表达式,可以找到一个带有文本'添加'的按钮。位于div内,其中h1包含文字'面板可见&#39 ;?

以下是当前存在的HTML的编辑版本

<div class="foo1">
<div class="foo2">
<div class="foo3">
<div class="foo4">
<div class="foo5">
<h1 >New Contact</h1>
</div>
<div >
<div >
<div >
<span >
<button >Add</button>
</span> 

2 个答案:

答案 0 :(得分:1)

试试这个:

//div/h1[contains(text(), 'panel visible')]/button[contains(text(), 'Add')]

答案 1 :(得分:1)

这很有效,但紧密耦合

@FindBy(xpath="//h1[contains(text(), 'Panel visible')]/../../..//button[contains(text(), 'Add')]")

这是一个更好的答案,而且更松散耦合

(xpath="//*[contains(concat(' ', @foo, ' '), ' foo_container ')][descendant::h1[contains(text(), 'Panel visible')]]//button[contains(text(), 'Add')]")