我有这个HTML
<div class="ui-widget">
<select name="calAlum" style="display: none;">undefined
<option value=""></option>
<option value="5.0">5.0</option>
<option value="5.1">5.1</option>
<option value="5.2">5.2</option>
<option value="5.3">5.3</option>
<option value="5.4">5.4</option>
<option value="5.5">5.5</option>
<option value="5.6">5.6</option>
<option value="5.7">5.7</option>
<option value="5.8">5.8</option>
<option value="5.9">5.9</option>
<option value="6.0">6.0</option>
<option value="6.1">6.1</option>
<option value="6.2">6.2</option>
<option value="6.3">6.3</option>
<option value="6.4">6.4</option>
<option value="6.5">6.5</option>
<option value="6.6">6.6</option>
<option value="6.7">6.7</option>
<option value="6.8">6.8</option>
<option value="6.9">6.9</option>
<option value="7.0">7.0</option>
<option value="7.1">7.1</option>
<option value="7.2">7.2</option>
<option value="7.3">7.3</option>
<option value="7.4">7.4</option>
<option value="7.5">7.5</option>
<option value="7.6">7.6</option>
<option value="7.7">7.7</option>
<option value="7.8">7.8</option>
<option value="7.9">7.9</option>
<option value="8.0">8.0</option>
<option value="8.1">8.1</option>
<option value="8.2">8.2</option>
<option value="8.3">8.3</option>
<option value="8.4">8.4</option>
<option value="8.5">8.5</option>
<option value="8.6">8.6</option>
<option value="8.7">8.7</option>
<option value="8.8">8.8</option>
<option value="8.9">8.9</option>
<option value="9.0">9.0</option>
<option value="9.1">9.1</option>
<option value="9.2">9.2</option>
<option value="9.3">9.3</option>
<option value="9.4">9.4</option>
<option value="9.5">9.5</option>
<option value="9.6">9.6</option>
<option value="9.7">9.7</option>
<option value="9.8">9.8</option>
<option value="9.9">9.9</option>
<option value="10.0">10.0</option>
</select>
当我点击objetc显示所有列表但是如果按“5”例如列表只显示“5.0”,“5.1”,“5.2”等,当我按5.8时只显示“5.8” llike值选择
所以我想用VBA选择任何选项,(其他combox我没有问题,但这有错误)
我试过这个
sub CALF()
Dim H As selenium.Keys
*Here find the element "select" whit the name "calAlum"* i dont have problem
For Each element In WEB3.FindElementsByTag("select")
If element.Attribute("name") = "calAlum" Then
element.AsSelect.selectbyvalue Activecell *in this part show error*
End If
Next
MsgBox "fin"
End Sub
但是对于这个下拉不起作用我试图使用不同的方法,但不工作,注意:此代码转到IF内部
“专注于盒子但不行”
element.click
“写价值不行”
element.sendkeys "5.8"
“复制剪贴板中的值,然后在objetc中粘贴值不起作用”
WEB3.SetClipBoard ActiveCell.Value
element.SendKeys Control, "V"
但如果手动选择对象中的任何值,如“9.8”,则在代码中使用
R= element.value
或
R=elment.attrribute("value")
返回“9.8”然后我使用
element.asselect.selectbyvalue R work
但如果我改变R =“9.7”并使用
element.asselect.selectbyvalue R
返回找不到错误值
然后我试着在selectelemnet中包装webelement这个
r= element.SelectedOption
r= element.asselect.selectedoption
知道选择了什么选项,但两者都返回void“”很少见,因为R = element.value返回“9.8”然后我使用
element.asselect.options
for i=0 to element.asselect.options
r(i)=element.asselect.selectedoption
next
知道所有选项都在选择元素“元素”但返回错误其必要的对象所以使用
r = element.IsSelected
但是返回false就是说我不能像webelement那样使用对象,如果我对selectelment进行包装,那么对象就没有任何选择,有人可以帮助我。
如果你帮我如何选择对象o如何操纵对象“选择”动态
答案 0 :(得分:0)
CSS选择器:
您可以使用CSS选择器来定位选择的选项,然后使用.Click
进行选择。您可以将选项值提取到一个变量中,然后将其连接到CSS选择器字符串中。
您的示例:
例如,您可以使用选择器select option[value='5.0']
,其中将5.0提取到变量中。
CONST SELECTED_INDEX As String = "5.0"
WEB3.FindElementByCss("select option[value='" & SELECTED_INDEX & "']").Click
以下是使用Facebook并选择生日下拉菜单的示例。
Facebook生日那天的CSS选择器:
#day option[value='18']
这被读为ID为"day"
的元素,其中包含标签option
,属性value
为=18
。 #
是ID选择器,[]
是属性。
VBA Code:
Option Explicit
Public Sub MakeSelection()
Dim d As WebDriver
Set d = New ChromeDriver
Const URL = "https://www.facebook.com/"
Const SELECTED_INDEX As Long = 18
With d
.Start "Chrome"
.get URL
'Selector was e.g. for day 1 "#day option[value='1']"
.FindElementByCss("#day option[value='" & SELECTED_INDEX & "']").Click
Stop '<= Delete me later
.Quit
Application.ScreenUpdating = True
End With
End Sub