【问题标题】:Not able to find out xpath of button无法找到按钮的 xpath
【发布时间】:2016-10-13 21:29:36
【问题描述】:

这是按钮的HTML

<button type="button" class="button" onclick="shippingMethod.save()">
  <span>
    <span>Continue</span>
  </span>
</button>

我想通过 xpath 表达式找到它。我已经试过了:

//button[contains(@class, 'button')][contains(@onclick, 'shippingMethod.save()') 

和:

By.xpath(".//[@id='shipping-method-buttons-container']/button") 

但两者都不起作用。

【问题讨论】:

  • 有异常吗?
  • 如果以下解决方案都不起作用,请与错误一起分享周围的 html 代码(其他元素是否可用,等等,错误日志)

标签: selenium xpath selenium-webdriver


【解决方案1】:

尝试使用以下任一xpaths

1- //button[@onclick='shippingMethod.save()']
这将找到具有onclick 属性为shippingMethod.save()

按钮

2- //button[normalize-space(.)='Continue']
这将定位 button,其 innerHTML/text 完全等于 Continue,并修剪了空格(如果存在)。

2- //button[@onclick='shippingMethod.save()' and normalize-space(.)='Continue']
这将定位具有onclick 属性为shippingMethod.save() 和innerHTML/text 完全等于Continue按钮,并修剪了空格(如果存在)。

【讨论】:

    【解决方案2】:

    您可以使用其中之一(最好是第二个,因为页面上可能有多个按钮匹配相同的条件):

    //span[.='Continue']/ancestor::button[1]
    

    或者

    //span[.='Continue']/ancestor::button[@onclick='shippingMethod.save()']
    

    此外,您还缺少标签名称或 *

    By.xpath(".//[@id='shipping-method-buttons-container']/button") 
    

    改成:

    By.xpath("//*[@id='shipping-method-buttons-container']/button") 
    

    如果按钮是按钮容器元素的直接子元素,它应该可以工作。如果没有:

    By.xpath("//*[@id='shipping-method-buttons-container']//button") 
    

    【讨论】:

      【解决方案3】:
      1. 右键单击网页上的元素,然后单击检查
      2. 元素的 HTML 应突出显示
      3. 右键单击突出显示的部分
      4. 将鼠标悬停在“复制”上
      5. 点击复制 xpath

      它们是从 google chrome 获取 xpath 的步骤。

      【讨论】:

        【解决方案4】:

        以下定位器之一可能会有所帮助

        //button[text()='Continue'] - 按子串查找

        //button[@class='button' AND @onclick='shippingMethod.save()'] - 使用 AND

        //button[@class='button' OR @onclick='shippingMethod.save()'] - 使用 OR

        (//button[@type='button'])[1] - 使用索引,从 1 开始。尝试更改索引值

        例如:(//button[@type='button'])[X] 这里 X 取索引值。

        【讨论】:

        • 我认为 xpath 索引从 1 开始,而不是从 0 开始
        • 按钮的text() 不是继续...它在SPAN 中。您的 OR 选项将匹配页面上的 任何 按钮。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-06
        • 1970-01-01
        • 1970-01-01
        • 2018-06-14
        • 2019-11-15
        • 2020-11-22
        相关资源
        最近更新 更多