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

Selenium获取CSS属性值异常:预期72px实际返回64px

问题:Selenium脚本获取的元素字体大小与浏览器控制台计算值不一致

我用Perl编写的Selenium脚本,在Firefox中检测getbootstrap.com页面上h1.mb-3.fw-semibold元素的font-size属性,预期值为72px,但脚本返回64px导致测试失败。但在浏览器控制台的Computed标签中,该元素字体大小显示为72px。

附测试脚本

#!/usr/bin/env perl

use strict;
use warnings;
use Test::More;
use Selenium::Firefox;
my $url = 'http://getbootstrap.com';
my $driver = Selenium::Firefox->new();
$driver->get($url);
my $elt = $driver->find_element(
 'h1.mb-3.fw-semibold', 'css');
is $elt->get_css_attribute('font-size'), '72px',
 'Masthead font size is unchanged';
$driver->quit();
done_testing;

脚本运行报错

❯ ./selenium_properties_css_attribute.pl 
not ok 1 - Masthead font size is unchanged
#   Failed test 'Masthead font size is unchanged'
#   at ./selenium_properties_css_attribute.pl line 12.
#          got: '64px'
#     expected: '72px'
1..1
Killing Driver PID 4132 listening on port 45685...
# Looks like you failed 1 test of 1.

浏览器控制台显示截图

浏览器控制台Computed标签显示字体大小为72px


原因分析与解决办法

核心原因:响应式布局的视口差异

Bootstrap是响应式框架,h1.mb-3.fw-semibold的字体大小会根据浏览器视口宽度动态调整:

  • 视口宽度足够大(比如桌面端全屏)时,字体大小为72px;
  • 视口较小时,会触发媒体查询,将字体大小调整为64px(或更小)。

Selenium启动Firefox时,默认窗口是较小的默认尺寸,页面加载时匹配了小视口的媒体查询,所以脚本拿到64px;而你手动打开浏览器用的是全屏,因此看到72px。

解决办法

在脚本中设置浏览器窗口为全屏或指定足够大的尺寸,确保页面加载时匹配桌面端的媒体查询:

方法1:设置窗口全屏

在$driver->get($url);之前添加全屏代码:

$driver->maximize_window();

方法2:指定固定窗口尺寸

如果不需要全屏,也可以设置一个足够大的固定尺寸,比如:

$driver->set_window_size(1920, 1080);

修改后的完整脚本示例:

#!/usr/bin/env perl

use strict;
use warnings;
use Test::More;
use Selenium::Firefox;
my $url = 'http://getbootstrap.com';
my $driver = Selenium::Firefox->new();
$driver->maximize_window(); # 添加全屏设置
$driver->get($url);
my $elt = $driver->find_element(
 'h1.mb-3.fw-semibold', 'css');
is $elt->get_css_attribute('font-size'), '72px',
 'Masthead font size is unchanged';
$driver->quit();
done_testing;

额外验证点

如果问题仍存在,还可以检查:

  • 页面是否完全加载:添加等待逻辑,确保元素样式完全渲染后再获取属性,比如使用$driver->wait_for_element_displayed('h1.mb-3.fw-semibold', 10);
  • 是否存在动态样式覆盖:有些页面会通过JS动态修改样式,需要等待JS执行完成。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 07:35:17