2017-02-14 76 views
0

所以我有一个网页,我想找到按钮注册只有当按钮名称字段出现在div entire classXpath的发现对父子只有当别的孩子存在

<div class="entire class"> 
    <div class = "upper class> 
     <button class="NameField"></button> 
    </div> 
    <div class="lower class"> 
     <button class="SignUp"></button> 
    </div> 
</div> 

我该如何做到这一点?我试过以下内容:

$x("//div[@class='entire class']//button[@class='NameField'] and not(descendant::button[@class='SignUp']") 

$x("//*[@class='upper class'] | [@class='SignUp']") 

$x("//*[@class='SignUp'] | //body)[last()]") 

$x("//div[//button[@class='SignUp'] and [//button[@class='NameField']]") 

没有一个似乎在工作。

回答

1

尝试以下XPath

//div[button[@class="NameField"]]/following-sibling::div/button[@class="SignUp"] 

//div[@class="entire class" and div[button[@class="NameField"]]]/div/button[@class="SignUp"] 

或简化的一个:

//button[@class="NameField"]/following::button 
+0

所以第一个选项不返回任何东西。第二个选项即使在NameField按钮不存在的div中也会返回所有注册按钮。 – President

+0

你的意思是有多对'NameField' /'SignUp'按钮?是的,在这种情况下,第二种选择是不可接受的。但首先应该工作(为我工作)。检查提供的'HTML'样本是否与真实的'HTML'完全相同 - 您可以在准备此示例时删除一些重要节点 – Andersson

+1

@President,也可以试试这个'// div [@ class =“entire class”and div [按钮[@类= “名称字段”]]]/DIV /按钮[@类= “注册”]' – Andersson

相关问题