好的,我想我们知道了。
我用过漂亮的汤 - https://pypi.org/project/beautifulsoup4/ - 我们用它来查看 html 的类。
一旦 selenium 加载了页面,抓取 html 并使用漂亮的汤把它变成我们可以使用的东西 - 下面是一个如何做到这一点的小例子
from bs4 import BeautifulSoup
html = driver.page_source
soup = BeautifulSoup(html, 'lxml')
鉴于我没有 html,我制作了一些与您上传的图片相匹配的小版本,以下是“jstree-open”类已知的开放订单项。
open = '''
<div id="tree" class="jstree jstree-1">
<ul class="jstree-container-ul jstree-children">
<li class="jstree-node jstree-last jstree-open">
</li>
</ul>
</div>
'''
open_soup = BeautifulSoup(open)
使用css选择器我们可以得到li的所有类名:
classes_of_open_li = open_soup.select('div#tree ul.jstree-container-ul li')[0].get('class')
print(classes_of_open_li)
out: ['jstree-node', 'jstree-last', 'jstree-open']
然后我们可以测试一下 'jstree-open' 是否是这些类之一:
'jstree-open' in classes_of_open_li
out: True
然后我们可以测试相反的结果:
closed = '''
<div id="tree" class="jstree jstree-1">
<ul class="jstree-container-ul jstree-children">
<li class="jstree-node jstree-last jstree-closed">
</li>
</ul>
</div>
'''
closed_soup = BeautifulSoup(closed)
classes_of_closed_li = closed_soup.select('div#tree ul.jstree-container-ul li')[0].get('class')
'jstree-open' in classes_of_closed_li
out: False
之后你想选择所有列表项,你可以使用相同的函数返回所有列表项的列表:
li = '''
<div id="tree" class="jstree jstree-1">
<ul class="jstree-container-ul jstree-children">
<li class="jstree-node jstree-last jstree-closed">
<ul>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
</li>
</ul>
</div>
'''
line_soup = BeautifulSoup(li)
all_line_items = line_soup.select('div#tree ul.jstree-container-ul li ul li')
out: [<li></li>, <li></li>, <li></li>, <li></li>]
希望这会有所帮助!