VBA从下拉列表中选择没有" id"

时间:2016-06-15 03:22:00

标签: vba web-scraping

我已使用VBA打开以下IE页面:https://insurance.qbe.com.au/portal/caravan/form/estimate

我现在希望我的代码选择第一个下拉列表的第一个选项 - 这是大篷车类型。

以下是下拉列表的HTML:

enter image description here

我已尝试使用以下代码选择" Caravan"从下拉列表中:

IE.Document.GetElementsbyClassName("ui-select-search ui-select-toggle ng-pristine ng-valid ng-touched")(1).Click

也试过

IE.Document.GetElementsbyClassName("ui-select-search ui-select-toggle ng-pristine ng-valid ng-touched")(1).SelectedIndex = 1

还试过看似奇怪的,比如

IE.Document.GetElementsbyClassName("ui-select-search ui-select-toggle ng-pristine ng-valid ng-touched")(1).Value = "Caravan"

所以我想我真正想知道的是:当关联的HTML似乎只有一个类(并且没有id)时,如何从下拉列表中选择一个值?

然后我扩展了HTML以查看我是否遗漏了某些内容。我在下拉列表的HTML结尾处看到以下内容,我认为解决方案依赖于此(但此时根本不确定)。

enter image description here

因此,我不再确定哪个HTML会影响下拉列表中需要选择的值 - 而且还不确定如何实际选择该值

1 个答案:

答案 0 :(得分:0)

GetElementsbyClassName不适用于所有版本的IE。
这样做:

  • 获取所有选择的集合:列表
  • 迭代列表集合:l
  • 将list l的selectedIndex设置为第一项:selectedIndex = 0

完成!!

Dim lists, l 'Removed the opts and o variables you dim'd here as they don't feature in the code
Set lists = IE.document.getElementsByTagName("select") 'edited this line to include IE. before document 
For Each l in lists
    If instr(1, l.className,"ui-select-search", 1) then
         l.selectedIndex = 0        
    End If
next