【问题标题】:Xpath not finding element (parent/ancestor)Xpath 找不到元素(父/祖先)
【发布时间】:2018-05-29 16:42:22
【问题描述】:
<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 控制台找到元素

【问题讨论】:

    标签: selenium xpath


    【解决方案1】:

    尝试如下更新你的表达式:

    //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'] 打算测试父 div@class 值,而不是目标 button

    【讨论】:

    • 这个可行,但由于页面内容,我必须得到结果。如果使用带有上节点的祖先,我有四个结果......我想我必须联系开发人员来解决这个问题
    【解决方案2】:

    您可以尝试以下 xpath。

    1. //*[@class="slds-show"]/button[text()="Save"]

    1. //*[class="slds-show"]/button[@class="slds-button slds-button--brand slds-m-left--small"]

    【讨论】:

      【解决方案3】:

      xpath 很容易变得过于复杂,您也可以尝试以下方法:

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

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

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

      【讨论】:

        【解决方案4】:

        通过您的问题to click on Save buttonfind it throughclassattribute from first div (slds-show),您可以使用更简单有效的xpath如下:

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

        注意slds-button--brand类属性对于Save按钮是唯一的。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2016-04-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-12-09
          相关资源
          最近更新 更多