给出html:
<div class="class1">
<div class="class2">1 2 3</div>
<div class="class3">a b c</div>
</div>
因为我的html中有几个div元素使用类“class1”而没有一个id我希望通过其子文本找到/获取这个父元素。
我尝试了不同的变种,比如
By.xpath("//div[contains(@class, 'class1') "
+ "and text()[contains(.,'1 2 3')] "
+ "and text()[contains(.,'a b c')]]"));
但似乎没有任何效果。
在上面的例子中,我猜测了class1元素的文本,但没有检查它的子文本。
有人可以帮忙吗?
答案 0 :(得分:1)
因此,您正在寻找包含div
和class1
文字的孩子的1 2 3
课程a b c
。从你所尝试的例子来看,我假设孩子们没有其他条件(例如上课):
//div[@class='class1' and div/text()='1 2 3' and div/text()='a b c']
如果您不关心*
是否div
,您可以将这些子节点名称设为descendant::
。如果您不要求儿童节点名称以import {Component} from 'angular2/core';
@Component({
selector: 'click-me',
template: `<button (click)="onClickMe()">Hide A Friend Input</button>`
})
作为直接孩子,则可以使这些节点名称前缀为export class DuplicateComponent {
onClickMe() {
alert("try change type");
this.type = "hidden";
}
}
。
答案 1 :(得分:1)
尝试以下任何一种xpath。
使用<div>
代码的类属性。
//div[@class='class2']/..//div[@class='class3']/..//parent::div[@class='class1']
xpath的说明:首先使用class
标记的<div>
属性找到两个子元素,然后使用parent
关键字<div>
向前移动}标记以及class
属性。
OR
使用文字方法和<div>
代码。
//div[text()= '1 2 3']/..//div[text()= 'a b c']/..//parent::div[@class='class1']
xpath的说明:首先使用text
标记的<div>
方法查找两个子元素,然后使用parent
关键字<div>
继续前进}标记以及class
属性。
以上xpath
将找到您的父元素<div class="class1">