You need to enable JavaScript to run this app. VBA Selenium遍历单选按钮获取选中值并打印的实现方法
优惠活动
大模型
产品
解决方案
定价
更多

VBA Selenium遍历单选按钮获取选中值并打印的实现方法

问题修复方案

核心错误原因

  • VBA Selenium的Attribute()方法直接返回属性结果,不需要追加.Value调用,你原有写法属于语法错误,加上On Error Resume Next屏蔽了报错,导致判断逻辑永远无法触发
  • checked是HTML布尔属性,实际返回值可能是布尔值True,也可能是字符串checked,仅判断等于字符串"checked"会出现匹配失败的情况
  • 你提供的HTML片段存在语法错误,Orange对应的单选框不在<tr>节点内,遍历<tr>下的input元素会漏掉该选项,若实际网页结构也是如此需要额外处理

修正后可运行代码

Chrome.Wait 100
                    
Set seconds = Chrome.FindElementsByTag("tr")
j = 2
s = 2
Set mysheet = Sheets("Sheet7")

' 遍历所有tr节点
For Each second In seconds
    ' 临时注释错误跳过语句方便排查问题,稳定运行后可按需恢复
    ' On Error Resume Next
    
    mysheet.Cells(j, s).Value = second.FindElementsByTag("td")(2).Text
    
    Set inputvs = second.FindElementsByTag("input")
    For Each inputv In inputvs
        ' 兼容布尔值和字符串两种checked返回情况
        If inputv.Attribute("checked") = True Or inputv.Attribute("checked") = "checked" Then
            ' 打印并写入选中值
            Debug.Print inputv.Attribute("value")
            mysheet.Cells(j, s).Value = inputv.Attribute("value")
        Else
            Debug.Print "none"
        End If
    Next
    
    j = j + 1
Next

更高效的简化写法

不需要遍历所有单选框,直接用CSS选择器定位当前行下选中的单选框即可:

' 替换掉遍历inputvs的整个循环即可
On Error Resume Next ' 防止当前行没有选中单选框时报错
Set checkedRadio = second.FindElementByCss("input[type='radio']:checked")
If Err.Number = 0 Then
    Debug.Print checkedRadio.Attribute("value")
    mysheet.Cells(j, s).Value = checkedRadio.Attribute("value")
End If
On Error GoTo 0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 02:27:03