我可以通过driver.find_element_by_xpath(‘// * [@ id =“app”] / table / tbody / tr [1] / td [1]’)的xpath找到元素.但任何方式我都可以返回所有子元素,如标记和标记xpath?
<tr>
<td class="">
<div>
<a href="/user/1">
<!-- react-text: 6011 -->user first name |
<!-- /react-text -->
<!-- react-text: 6012 -->
<!-- /react-text -->
<!-- react-text: 6013 -->user last name
<!-- /react-text -->
</a>
<div>
<span>
<!-- react-text: 6014 -->town<!-- /react-text -->
<!-- react-text: 6015 --> | <!-- /react-text -->
<!-- react-text: 6015 -->month<!-- /react-text -->
<!-- react-text: 6081 --> | date<!-- /react-text -->
<!-- react-text: 6082 -->year<!-- /react-text -->
</span>
</div>
</div>
</td>
<td class=""><a href="/address/1">1</a>
<div class="">city</div>
</td>
</tr>
解决方法:
关键是使用xpath .//*来获取当前节点的所有子节点.的.选择当前元素& // *选择所有元素,这使得整个xpath选择当前元素的所有子元素.您的代码将如下所示:
parent_elem = driver.find_element_by_xpath('//*[@id="app"]/table/tbody/tr[1]/td[1]')
child_elements = parent_elem.find_elements_by_xpath('.//*')