You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Selenium WebDriver如何根据元素style的height值编写if判断逻辑?

问题描述

我想编写Selenium WebDriver脚本,当元素style属性的height值为0px时执行某操作,为其他值时执行另一操作。我已经能用element.value_of_css_property命令打印该值,但不知道如何将其用于if判断逻辑。以下是我处理的HTML代码片段和尝试后无效的代码:

目标HTML代码

<div id="computerfilter" class="gridView safari fixed" style="min-width: 110px; overflow: hidden; min-height: 89%;">
 <ul style="position: relative; list-style: none; padding-inline-start: 0px; padding-left: 0px; margin-left: 0px; margin-right: 0px; height: 0px; width: 1000px;"><div style="position: relative; top: 0px;" class="viewport"><li class="lmigrid-row parent expanded" style="cursor: pointer;">

尝试的无效代码

if len(self.driver.find_elements(By.CSS_SELECTOR, "ul.computerfilter[style height:0px]")) 
解决方案

方法一:获取CSS属性值做判断(推荐)

先精准定位目标ul元素,再获取其height属性值进行判断:

# 通过父元素id定位内部ul,避免页面其他ul干扰
target_ul = self.driver.find_element(By.CSS_SELECTOR, "#computerfilter ul")
# 获取height的CSS属性值
current_height = target_ul.value_of_css_property("height")

# 判断逻辑
if current_height == "0px":
    # 高度为0px时执行的操作
    print("执行高度为0的操作")
else:
    # 高度不为0时执行的操作
    print("执行高度不为0的操作")

方法二:修正CSS选择器直接匹配

你之前的CSS选择器语法错误,正确匹配style中包含height: 0px的写法如下:

# 修正后的CSS选择器,用*=匹配属性包含指定文本
matching_elements = self.driver.find_elements(By.CSS_SELECTOR, "#computerfilter ul[style*='height: 0px']")

if len(matching_elements) > 0:
    # 存在高度为0px的ul时执行操作
    print("执行高度为0的操作")
else:
    # 不存在时执行另一操作
    print("执行高度不为0的操作")

注意点

  • 定位元素时尽量精准,比如借助父元素的id缩小范围,避免误匹配其他元素。
  • style属性中的空格可能影响匹配,比如height:0px和height: 0px,使用*=包含选择器可以兼容这种差异;如果用属性值严格匹配,要注意和实际返回的格式一致。

内容的提问来源于stack exchange,提问作者Jake Fink

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 14:23:08