2016-11-17 90 views
0

我需要抓取第三個span元素,位於A元素內部,該元素也位於具有ID的LI元素內。我想用ID來先找到LI元素,然後在其中找到第三個span元素。 HTML例子:使用XPath或CssSelector通過ID找到的元素中的標記名稱查找第n個元素

<li id='MyID'> 
<a href="MyHRef"> 
<span>first span</span> 
<span>second span</span> 
<span>third span</span> 
</a> 
</li> 

我嘗試以下,但我不認爲我有它正確地寫入:

public readonly By Menu_ProgramMatchingNumber = By.XPath("li[@id='MyID']/following-sibling::span[3]"); 

回答

3

根據XPath語法:

http://www.w3schools.com/xml/xpath_syntax.asp

您可能希望使用://li[@id='MyID']/a/span[3]

或更具體: //li[@id='MyID']/a[@href='MyHRef']/span[3]

+0

我編輯了原來的職位爲包括A標籤。如果您編輯您的答案以包含此A標記,我會將其標記爲答案。 By.XPath(「// li [@ id ='ap-menu-program-matching']/a/span [3]」) –

+0

@MikeJohnston,剛剛更新了答案以反映您的最新變更。 –

1

使用CSS:

By.CssSelector("li#MyID a > span:nth-of-type(3)") 
+0

你可能應該使用''li#MyID> a> span:nth-​​of-type(3)「'作爲額外的細節,因爲你可以。 – JeffC

+0

這個問題,在我多年的經驗中,'li'比'a'更有可能被改變。通過消除li到'a'的'>',你可以節省一些心痛,如果他們加了'

  • ...
  • '但是,它不會改變。 :)謝謝@JeffC – sircapsalot

    +0

    雖然,現在我想到了 - 兩者都有可能改變。我通常不會盡可能地使用直接的孩子,因爲我會脆弱:) – sircapsalot

    相關問題