2017-05-19 125 views
0

的給定的HTML文本:硒的webdriver/XPath的:如何找到實體元素及其子

<div class="class1"> 
    <div class="class2">1 2 3</div> 
    <div class="class3">a b c</div> 
</div> 

因爲我已經在我的HTML中使用類「class1的」幾個div元素,並沒有一個是編號我想通過它的孩子的文本找到/獲取這個父元素。

我嘗試了不同的變種一樣

By.xpath("//div[contains(@class, 'class1') " 
    + "and text()[contains(.,'1 2 3')] " 
    + "and text()[contains(.,'a b c')]]")); 

但似乎沒有任何工作還沒有。

在上面的例子中,我猜測class1元素的文本被選中,但沒有選中它的子元素。

任何人都可以幫忙嗎?

回答

1

所以你正在尋找div與類class1有孩子的文字1 2 3a b c。從你的,你已經嘗試過什麼例子,我假設沒有進一步的條件對兒童(如類):

//div[@class='class1' and div/text()='1 2 3' and div/text()='a b c'] 

你可以讓那些孩子節點名稱爲*如果你不在乎是否他們是div或不。如果您不要求他們是直接子女,則可以使子女節點名稱的前綴爲descendant::

+0

嘗試,它做工精良。非常感謝! – StephanM

1

嘗試下面提到的任何xpath。

使用<div>標籤的class屬性。

//div[@class='class2']/..//div[@class='class3']/..//parent::div[@class='class1'] 

的XPath的說明:首先使用<div>標籤的class屬性定位子元素,然後用parent關鍵字與<div>標籤與class屬性一起往前走。

OR

使用文字法<div>標籤一起。

//div[text()= '1 2 3']/..//div[text()= 'a b c']/..//parent::div[@class='class1'] 

的XPath的說明:首先使用<div>標籤的text方法找到子元素,然後用parent關鍵字與<div>標籤與class屬性一起往前走。

上述這些xpath會找到你的父元素<div class="class1">