使用Selenium VBA获取元素readonly状态及查看WebElement内容问题
Selenium VBA 问题解决方案
1. 获取元素的readonly状态
要判断元素是否处于readonly状态,直接使用WebElement对象的GetAttribute方法获取readonly属性即可:
' 定位目标元素 Set targetElement = GC.FindElementByXPath("你的目标元素XPath") ' 获取readonly属性值 Dim readonlyStatus As String readonlyStatus = targetElement.GetAttribute("readonly") ' 判断逻辑:HTML中readonly属性只要存在,无论值为"true"还是空字符串,元素均为只读状态 If readonlyStatus <> "" Then Debug.Print "元素是只读状态" Else Debug.Print "元素非只读状态" End If
2. 遍历WebElement对象的所有属性及子元素
遍历所有属性
通过执行JavaScript获取元素的完整属性集合,再在VBA中遍历输出:
Set FUC_CODE = GC.FindElementByXPath("//*[@id='C33_W105_V106_zaet_etqdata_ext.zzfinal_code']") ' 执行JS提取元素所有属性 Dim attributes As Object Set attributes = GC.ExecuteScript("var attrs = {}; for(var i=0; i<arguments[0].attributes.length; i++){ attrs[arguments[0].attributes[i].name] = arguments[0].attributes[i].value; } return attrs;", FUC_CODE) ' 遍历属性 Dim attrKey As Variant For Each attrKey In attributes Debug.Print "属性名: " & attrKey & ", 属性值: " & attributes(attrKey) Next attrKey ' 单独获取Value属性可直接调用: Debug.Print "Value属性值: " & FUC_CODE.Value
遍历子元素
若要查看当前元素下的所有子元素,可通过FindElements定位子元素集合后逐个遍历:
Dim childElements As Object Set childElements = FUC_CODE.FindElementsByXPath(".//*") ' .限定搜索范围为当前元素的子节点 Dim childElement As WebElement For Each childElement In childElements Debug.Print "子元素标签名: " & childElement.TagName & ", 文本内容: " & childElement.Text Next childElement
内容的提问来源于stack exchange,提问作者protter
相关产品推荐
相关产品推荐

