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

VBA Selenium修改元素属性值及日期选择器操作问题

VBA Selenium操作问题:日期选择器属性修改与时长字段选择

一、修改data-maska-value属性无效的解决方案

你直接通过setAttribute修改data-maska-value未生效,核心原因是页面基于Nuxt.js框架开发,仅修改DOM属性无法同步到框架内部状态,需要同时更新输入框值并触发前端事件。

替换原修改属性的代码为:

Dim oElement As Selenium.WebElement
Set oElement = .FindElementByXPath("//div[@class='input-container']/input[@class='input']")
Dim targetDate As String
' 根据页面显示的日期格式调整Format参数,比如页面用dd/MM/yyyy就改为该格式
targetDate = Format(ws.Cells(iRow, "L").Value, "yyyy-MM-dd") 

' 同步修改属性、输入框值,并触发input事件触发框架状态更新
.ExecuteScript _
    "arguments[0].setAttribute('data-maska-value', '" & targetDate & "');" & _
    "arguments[0].value = '" & targetDate & "';" & _
    "arguments[0].dispatchEvent(new Event('input'));", _
    oElement

' 验证修改结果
Debug.Print oElement.Attribute("data-maska-value")
Debug.Print oElement.Value

二、时长字段选择4个月的解决方案

在你点击时长下拉框的代码之后,添加以下逻辑定位并选择“4 months”选项:

Dim oDuration As Selenium.WebElement
Set oDuration = .FindElementByXPath("//*[@id='__nuxt']/main/div/div[2]/div/div/div[1]/div[2]/div/div/div")
If Not oDuration Is Nothing Then
    .Wait 500
    .ExecuteScript "arguments[0].click();", oDuration
    .Wait 500 ' 等待下拉选项动态加载完成
    
    ' 定位“4 months”选项,若基础XPath不准确,可通过浏览器开发者工具补充父容器类名优化
    Dim o4MonthsOption As Selenium.WebElement
    Set o4MonthsOption = .FindElementByXPath("//div[contains(text(), '4 months')]")
    
    If Not o4MonthsOption Is Nothing Then
        o4MonthsOption.Click
    End If
End If

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 03:01:11