Java 如何基于div中的其他元素编写嵌套xpath表达式?
我需要找到一个使用xpath的按钮,并尝试使用嵌套的xpath表达式 我一直在使用这个表达式Java 如何基于div中的其他元素编写嵌套xpath表达式?,java,selenium,xpath,nested,fluentlenium,Java,Selenium,Xpath,Nested,Fluentlenium,我需要找到一个使用xpath的按钮,并尝试使用嵌套的xpath表达式 我一直在使用这个表达式 @FindBy(xpath="//*/button[contains(text(),'FOO')]") 在代码中的其他地方找到其他按钮的实例,到目前为止,这一切都很好。但是,我的代码在页面上动态创建“添加”按钮的多个实例,有时这些添加按钮是不可见的 是否可以编写一个Xpath表达式,以便在包含文本“panel visible”的div中找到文本为“Add”的按钮 这里是HTML的一个修订版本,它目前
@FindBy(xpath="//*/button[contains(text(),'FOO')]")
在代码中的其他地方找到其他按钮的实例,到目前为止,这一切都很好。但是,我的代码在页面上动态创建“添加”按钮的多个实例,有时这些添加按钮是不可见的
是否可以编写一个Xpath表达式,以便在包含文本“panel visible”的div
中找到文本为“Add”的按钮
这里是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>
新联系人
添加
试试这个:
//div/h1[contains(text(), 'panel visible')]/button[contains(text(), 'Add')]
这是可行的,但紧密耦合
@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')]")
是的,这是完全可能的。不过,您需要提供一些html来获得进一步的帮助。