Selenium+Python:execute_script验证图片显示的异常问题排查
问题原因解析
这是JavaScript运算符优先级导致的逻辑错误:
typeof运算符的优先级高于关系运算符>,所以你写的typeof arguments[0].naturalWidth>0会被JS引擎按以下顺序执行:- 先计算
typeof arguments[0].naturalWidth,因为naturalWidth是数值类型(431),所以返回字符串"number" - 接着执行字符串与数字的比较:
"number" > 0。JS中字符串和数字比较时,会尝试把字符串转为数字,而"number"无法转为有效数字,会得到NaN NaN和任何值比较的结果都是false,所以最终返回false
- 先计算
而正确写法 return (arguments[0].naturalWidth>0) 是直接对数值进行比较:431 > 0,结果自然为 true,符合图片正常加载的实际情况。
另外补充:验证图片是否正常加载时,naturalWidth > 0 是可靠的判断方式——当图片加载成功时,naturalWidth 会返回图片的原始宽度(正整数);如果加载失败(比如链接失效、资源不存在),naturalWidth 会是0。
内容的提问来源于stack exchange,提问作者zaelcovsky
相关产品推荐
相关产品推荐

