目前我对硒的知识是有限的,但是据我所知driver.find_elements_by_xpath()返回了一个Webelements列表。然后,人们可以遍历元素,并做任何想做的事情,例如打印文本。这部分很容易。但是现在假设在给定的页面上,我将寻找3个节点的每种组合:
<parent>
<h1>text</h1>
<div class="identifier">more stuff</div>
<h3>text2</h3>
<h1>other text</h1>
<div class="identifier">other more stuff</div>
<h3>other text2</h3>
...
</parent>
这3个节点(此处为h1,带有class的div和h3)处于同一层次结构上,并且自列表以来,其中有许多节点。有没有办法让硒将它们“包装”回来?在这种情况下,我可以确保获得正确的数据。我现在的操作方式是获取中间元素,然后在指定标签的同级元素之前和之后进行同级操作。但是我觉得那充其量不过是怪诞的。
多谢。
我不确定您的方法使用的是什么代码,但是我会做类似的事情。
headings = driver.find_elements_by_css_selector("parent > h1"))
for i in range(len(headings)):
heading = driver.find_element_by_css_selector("parent > h1:nth-of-type(" + i + ")"))
identifier = driver.find_element_by_css_selector("parent > div.identifier:nth-of-type(" + i + ")"))
subheading = driver.find_element_by_css_selector("parent > h3:nth-of-type(" + i + ")"))
// do something with each element here
现在,您可以引用每个元素。
注意:这假定每个元素始终存在。如果您缺少h3
,等,则此代码将使组不匹配。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句