我有一些看起来像这样的HTML:
<div class="class1">
<div class="some multiple classes here">
<div class="some multiple classes here">
<ul class="other classes">
<li>
<div class="random">some text1</div>
<div class="random1">some text2</div>
<div class="random2">some text3</div>
</li>
<li>
<div class="random">some text4</div>
<div class="random1">some text5</div>
<div class="random2">some text6</div>
</li>
<li>
<div class="random">some text7</div>
<div class="random1">some text8</div>
<div class="random2">some text9</div>
</li>
<!-- here can appear more <li></li> elements -->
</ul>
</div>
</div>
</div>
情况有点复杂:
<li></li>
个标签内部有相同的<div>
类,但文本不同。更多信息,<li></li>
(具有相同的div
s)会随着时间的推移而出现。我很难找到使用some textX
和xpath
在单个循环中检索所有selenium
元素的解决方案(如果不可能,则不必要)但我无法找到远。更重要的是,当我完成所有<li></li>
标记后,我想等待其他人出现并采取一些行动。
伪代码如下:
for mydriver.find_element_by_xpath('xpath of ul'):
# here get all the texts
# process them
答案 0 :(得分:1)
您需要所有直接使用li标签的div吗?
divs = driver.find_elements_by_xpath('//li/div')
或者通过css选择器
divs = driver.find_elements_by_css_selector('li > div')
答案 1 :(得分:0)
您可以使用<li>
找到所有<ul>
代码,使用<div>
代码找到所有<li>
代码
divs = [] # will hold the divs
ul = driver.find_element_by_class_name('classes')
lis = ul.find_elements_by_tag_name('li') # list of the <li> tags
for li in lis:
divs.append(li.find_elements_by_tag_name('div')) # add all the <div> tags to divs list
for div in divs:
text = div.text
另一个解决方案是使用&#34;随机&#34;在课堂上
divs = driver.find_elements_by_css_selector('[class*="random"]')
for div in divs:
text = div.text