2016-10-12 84 views
0

這裏的XPath是按鈕的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") 

但無論工作。

+1

有什麼異常嗎? – Andersson

+0

如果以下解決方案都不起作用,請分享周圍的html代碼以及錯誤(其他可用元素,等待,錯誤日誌) – Sid

回答

0

嘗試使用任一下面的XPath

1-//button[@onclick='shippingMethod.save()']
    這將定位按鈕具有onclick屬性作爲shippingMethod.save()

2-//button[normalize-space(.)='Continue']  
  這將找到按鈕的innerHTML /文本完全等於Continue與空間(如果存在)修剪。

2-//button[@onclick='shippingMethod.save()' and normalize-space(.)='Continue']
    這將找到具有按鈕onclick屬性作爲shippingMethod.save()和的innerHTML /文本正好等於Continue用空格(如果存在)修整。

-1

其中一個下面定位器可幫助

//button[text()='Continue'] - 使用索引,從1開始 - 由串

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

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

(//button[@type='button'])[1]找到。改變指數值

例如:(//按鈕[@ type ='button'])[X] 這裏X取索引值。

+0

我認爲xpath索引從1開始,而不是從0開始 – Maze

+0

按鈕不是繼續...它在'SPAN'中。您的'OR'選項將匹配頁面上的*任何*按鈕。 – JeffC

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") 
0
  1. 右鍵單擊網頁上的元素,然後單擊檢查
  2. 該元素的HTML應該強調
  3. 突出顯示的部分中,右鍵單擊在「副本
  4. 哈弗「
  5. 點擊複製XPath

他們得到的x步驟來自谷歌瀏覽器的路徑。