无法找到按钮的xpath

时间:2016-10-12 10:13:46

标签: selenium xpath selenium-webdriver

以下是按钮的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") 

但是都没有工作。

4 个答案:

答案 0 :(得分:0)

尝试使用以下任一 xpaths

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

按钮

2 - //button[normalize-space(.)='Continue']
这将找到内部HTML /文本完全等于Continue按钮,并修剪空格(如果存在)。

2 - //button[@onclick='shippingMethod.save()' and normalize-space(.)='Continue']
这将找到onclick属性为shippingMethod.save()按钮,并且内部HTML /文本完全等于Continue,其中空格(如果存在)已修剪。

答案 1 :(得分:0)

你可以使用其中一个(最好是第二个,因为页面上可能有多个符合相同标准的按钮):

//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") 

如果按钮是buttons-container元素的直接子元素,它应该工作。如果不是:

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

答案 2 :(得分:0)

  1. 右键单击网页上的元素,然后单击“检查”
  2. 应突出显示该元素的HTML
  3. 右键点击突出显示的部分
  4. 将鼠标悬停在'copy'上
  5. 单击“复制xpath”
  6. 他们是从谷歌浏览器获取xpath的步骤。

答案 3 :(得分:-1)

以下定位器之一可以提供帮助

//button[text()='Continue'] - 通过substring

查找

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

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

(//button[@type='button'])[1] - 使用Index,从1.Trying更改索引值

开始

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