小时和分钟框是select
元素,这意味着通过 InternetExplorer 自动化,您有两种主要方法来选择单个项目(以及一些用于棘手情况的替代方法):
- 您可以使用
selectedIndex
on the select
然后本身指定索引option
对此下的列表感兴趣select
。我认为从 1 开始,但你需要检查一下。
- 使用 .Selected = True 上
option
元素本身。
由于您的选项具有相同的值,因此如果使用第二种方法,您需要通过父选择来隔离下拉列表。这可以通过在前面添加父类名来完成。
方法一:
hour
ie.document.querySelector(".hour").SelectedIndex = 1
minute
ie.document.querySelector(".minute").SelectedIndex = 1
方法二:
hour
ie.document.querySelector(".hour [value='0']").Selected = True 'hour 00
minute
ie.document.querySelector(".minute [value='0']").Selected = True 'minute 00
替代方案主要是用 javascript 编写的上述/变体,并通过以下方法执行ie.document.parentWindow.execScript
。当元素由于某种原因不可交互但通常会皱起眉头时,这会很有帮助
尤其是 QA 自动化专家。
Reading:
- CSS 选择器 https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Selectors
EDIT:
根据提供的 html 区分开始时间和结束时间,例如
ie.document.querySelector(".combodate + .combodate .hour [value='0']").Selected =True 'end hour
ie.document.querySelector(".combodate + .combodate .minute [value='0']").Selected =True 'end minute
使用变量
Dim var As Long
var = 0
ie.document.querySelector(".combodate .hour [value='" & cstr(var) & "']").Selected =True 'start hour
尽管您的 HTML 没有反映这一点,但我期望的内容更像是:
ie.document.querySelector("#starttime_field .combodate .hour [value='" & cstr(var) & "']").Selected =True
ie.document.querySelector("#endtime_field .combodate .hour [value='" & cstr(var) & "']").Selected =True