2017-05-19 87 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">