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
相关产品推荐
相关产品推荐

