Selenium 自动化中如何获取折叠面板内的内容
在编写自动化脚本时,经常需要处理页面上被折叠或隐藏的模块。比如某些列表项默认是收起的,或者表单里有动态展开的区域。这时候如果直接尝试定位元素,往往会报 NoSuchElementException。
针对这个问题,通常有两条路可以走:
- 遍历点击:先找到所有折叠按钮,循环调用 click() 方法把它们展开。
- 样式修改:直接通过 JavaScript 把元素的 display 属性改成 block。
说实话,第一种方法虽然符合'模拟用户操作'的逻辑,但实际跑起来隐患不少。页面渲染速度不一致容易导致点击后元素还没完全显示就继续执行,后面定位就会出错。而且频繁点击可能会触发额外的校验逻辑,甚至改变页面状态。
第二种方法更直接,利用 execute_script 注入一段 JS 代码即可。只要知道目标元素的类名或 ID,就能瞬间把它变可见。
var elements = document.getElementsByClassName('xxx');
for (var i = 0; i < elements.length; i++) {
elements[i].style.display = 'block';
}
在 Python 里调用也很简单,把这段代码传进去就行。不过要注意,这种方式绕过了浏览器的交互事件,如果页面依赖 click 事件来加载数据,那还得配合等待机制。但在大多数静态内容展示的场景下,这是最稳妥的方案。

