Xpath找不到元素(父/祖先)

时间:2017-12-15 12:57:47

标签: selenium xpath

<div class="slds-show" data-aura-rendered-by="10155:0">
<div class="footer" data-aura-rendered-by="10156:0">
    <div class="slds-grid slds-grid--align-end slds-m-top--large" data-aura-rendered-by="10157:0">
        <div class="slds-show" data-aura-rendered-by="10158:0">
            <button class="slds-button slds-button--neutral slds-m-left--small" data-aura-rendered-by="10159:0">Cancel</button>
            <button class="slds-button slds-button--neutral slds-m-left--small" data-aura-rendered-by="10161:0">Save &amp; New</button>
            <button class="slds-button slds-button--brand slds-m-left--small" data-aura-rendered-by="10163:0">Save</button>
        </div>
    </div>
</div>

这是页面的一部分,我将不得不点击“保存”按钮。 按钮不是唯一的,我需要通过第一个div(slds-show)的类属性找到它,或者

有人可以告诉我,为什么这个xpath没有找到这个元素?

//button[parent::div[@class='slds-show'][@class='slds-button slds-button--brand slds-m-left--small']]

我也尝试使用祖先,文本而不是类,结果是一样的。通过Firefox控制台找不到元素

4 个答案:

答案 0 :(得分:0)

尝试更新您的表达式,如下所示:

//button[parent::div[@class='slds-show'] and @class='slds-button slds-button--brand slds-m-left--small']

请注意,XPath中的谓词[@class='slds-button slds-button--brand slds-m-left--small']打算测试父@class的{​​{1}}值,而不是目标div

答案 1 :(得分:0)

您可以尝试以下xpath。

  1. [XmlRoot(ElementName = "root", Namespace = "http://foo.bar")] public class Root { // note empty namespace here [XmlElement(ElementName = "child", Namespace = "")] public Child Child { get; set; } }
    1. //*[@class="slds-show"]/button[text()="Save"]

答案 2 :(得分:0)

xpath很容易变得太复杂,你也可以尝试这样的事情:

  • //button[text()='Cancel']
  • //button[text()='Save & New']
  • //button[text()='Save']

这些将返回您需要的确切按钮。如果您正在寻找特定的祖先,请将其包含在您的xpath中:

//div[@class="slds-show"]//button[text()='Save & New']

答案 3 :(得分:0)

通过您的问题 to click on Save button find it through课程attribute from first div (slds-show) ,您可以使用更简单有效的 { {1}} 如下:

xpath
  

注意:类别属性 //div[@class='slds-show']/button[@class='slds-button slds-button--brand slds-m-left--small'] 对于 slds-button--brand 按钮是唯一的。