Excel VBA+Selenium:点击列表元素切换焦点以切换页面数据
Excel VBA 实现网页按钮切换(This season/All time)
核心问题
你当前定位的是li元素,但实际触发数据切换的是li内部的button标签,直接操作li无法触发页面数据更新,需要定位到对应button再模拟点击。
具体实现方法
1. 通过button的value属性精准定位
利用button的value属性直接找到目标按钮,代码示例:
' 切换到「All time」按钮 Dim allTimeBtn As Object Set allTimeBtn = IE.FindElementByXPath("//button[@value='All time']") allTimeBtn.Click ' 切换回「This season」按钮 Dim thisSeasonBtn As Object Set thisSeasonBtn = IE.FindElementByXPath("//button[@value='This season']") thisSeasonBtn.Click
2. 通过li元素索引定位(按钮顺序固定时可用)
如果两个按钮的位置不会变化,可先获取所有li元素,再通过索引区分并点击内部按钮:
' 获取所有导航项li元素 Dim navItems As Object Set navItems = IE.FindElementsByClass("shared-filter-button-list_navItem__ZiG2J") ' 切换到「All time」(第二个li,索引从0开始为1) navItems(1).FindElementByTag("button").Click ' 切换回「This season」(第一个li,索引0) navItems(0).FindElementByTag("button").Click
3. 动态页面需添加等待逻辑
如果页面是动态加载,按钮可能需要等待加载完成才能点击,可添加等待代码:
' 等待页面加载完成 Do While IE.Busy Or IE.ReadyState <> 4 DoEvents Loop ' 执行按钮点击 Set allTimeBtn = IE.FindElementByXPath("//button[@value='All time']") allTimeBtn.Click
内容的提问来源于stack exchange,提问作者Danjo9
相关产品推荐
相关产品推荐

