我想知道如何找到与特定标准相匹配的第一个先前兄弟(即.class =' a')?现在,当我运行搜索时,它会找到所有匹配的节点。这是我的意思的一个例子:
tr class = 'a'
tr class = 'b'
tr class = 'b'
tr class = 'a'
tr class = 'b'
tr class = 'a'
tr class = 'b'
tr class = 'b'
tr class = 'b'
对于b的每个实例,我试图找到第一个具有类' a'的前一个tr,但是当我运行代码时,它会找到所有前面的tr,它们有类' a& #39 ;.我也不能使用tr [1],因为有不同长度的课程' b'在每个班级以下' a'。以下是我要进入的内容:
//tr[@class='b']/preceding-sibling::tr[@class='a']
如果需要,我可以发布我的实际代码,但我认为这个例子说明了一切。
答案 0 :(得分:0)
也许我误解了这个问题但是,如果html是这样的话:
<table>
<tr class = 'a'>
<th>1</th>
</tr>
<tr class = 'b'>
<th>2</th>
</tr>
<tr class = 'b'>
<th>3</th>
</tr>
<tr class = 'a'>
<th>4</th>
</tr>
<tr class = 'b'>
<th>5</th>
</tr>
<tr class = 'a'>
<th>6</th>
</tr>
<tr class = 'b'>
<th>7</th>
</tr>
<tr class = 'b'>
<th>8</th>
</tr>
<tr class = 'b'>
<th>9</th>
</tr>
</table>
如果我执行此操作:
elList= driver.find_elements_by_xpath("//tr[@class='b']/preceding-sibling::tr[@class='a'] ")
print("len List: " + str(len(elList)))
for el in elList:
print ("value: " + el.text)
输出结果为:
len List: 3
value: 1
value: 4
value: 6