Selenium webdriver 在selenium中使用xpath或css获取其n个子元素具有相同类的父元素
我想使用xpath或css选择器查找class=parent class的元素div,其三个子元素应该具有相同的class=no数据 i、 e父类的所有三个>第三、第四和第五个子div都应具有“无数据”类。 例如:Selenium webdriver 在selenium中使用xpath或css获取其n个子元素具有相同类的父元素,selenium-webdriver,xpath,css-selectors,Selenium Webdriver,Xpath,Css Selectors,我想使用xpath或css选择器查找class=parent class的元素div,其三个子元素应该具有相同的class=no数据 i、 e父类的所有三个>第三、第四和第五个子div都应具有“无数据”类。 例如: 孩子1 孩子2 NA xyz ijk 孩子1 孩子2 NA NA NA 孩子1 孩子2 abc xyz ijk 孩子1 孩子2 NA NA ijk 尝试了以下解决方案:它适合我 //div[contains(@class,'parent-class') and div[@class
孩子1
孩子2
NA
xyz
ijk
孩子1
孩子2
NA
NA
NA
孩子1
孩子2
abc
xyz
ijk
孩子1
孩子2
NA
NA
ijk
尝试了以下解决方案:它适合我
//div[contains(@class,'parent-class') and div[@class='no-data'][1] and div[@class='no-data'][2] and div[@class='no-data'][3]]
or
//div[contains(@class,'parent-class') and (div[@class='no-data'][1] and div[@class='no-data'][2] and div[@class='no-data'][3])]
虽然正在寻找更好的解决方案,但您可以使用下面给定的xpath来跟踪所需的元素
//div[@class='main']//child::div[2]//
child::div[@class='no-data'][1]
//div[@class='main']//child::div[2]//
child::div[@class='no-data'][2]
//div[@class='main']//child::div[2]//
child::div[@class='no-data'][3]
我认为这应该做到:
//div[@class='parent-class'][not(div[(position()>2 and position()<6) and .[@class != 'no-data']])]
//div[@class='parent-class'][not(div[(position()>2和position()据我所知,您的要求应该是:
//div[@class='parent-class' and count(descendant::div[@class='no-data'])=3]
其中:
- -XPath是否返回当前节点及其子节点的子节点
- -XPath是否返回与表达式匹配的节点数
因此,上面的表达式将匹配具有3个子元素且无数据的标记
类@JeremyMoritz有什么建议吗?它们是3个不同的定位器,希望只使用一个定位器定位父元素。假设第3个元素具有类,则无数据意味着第4个和第5个元素也将具有相同的类。此外,它返回child而不是parent.tw使用上面提到的xpath获取父元素,并使用前面提到的假设//div[3][@class='na-value']]/parent::divok,我的意思是三个子元素具有相同的类(五分之三)。即,在上面的示例中,我想获取父元素,其子元素3rd、4th和5th具有相同的类。@KINZ因此,需要澄清的是:在上面的html中,只有第二个父类满足条件,并且所需的输出是其名称-div?
//div[@class='parent-class' and count(descendant::div[@class='no-data'])=3]