早安,
我一直在寻找答案和解决方案,但在此网站上证明的解决方案似乎对包括selectedIndex和遍历数组没有帮助
我有以下HTML代码组成一个表格,我要从中选择第二个选项“ Vorige周”
<table cellspacing="0" cellpadding="0" title="" class="mstrListBlock"
id="id_mstr51" style="display: table; width: auto;">
<tbody>
<tr>
<td class="mstrListBlockCell">
<span class="">
<div class="mstrListBlockCaption" style="display: none;"/>
<div class="mstrListBlockHeader" style="display: none;">
<div style="" class="mstrListBlockContents"
id="ListBlockContents_id_mstr51">
<div oncontextmenu="return
mstr.behaviors.Generic.oncontextmenu(arguments[0], self, 'id_mstr51');"
onmouseup="try{mstr.$obj('id_mstr51').focus();}catch(localerr){}; return
mstr.behaviors.Generic.clearBrowserHighlights(self)" onmousedown="var retVal
= mstr.behaviors.ListView.onmousedown(arguments[0], self, 'id_mstr51');
try{mstr.$obj('id_mstr51').focus();}catch(localerr){}; return retVal"
ondblclick="return mstr.behaviors.ListView.ondblclick(arguments[0], self,
'id_mstr51')" class="mstrListBlockListContainer" id="id_mstr51ListContainer"
style="display: block;">
<div class="mstrListBlockItem" title="Huidige Week">
<div class="mstrListBlockItemSelected" title="Vorige Week">
<div class="mstrBGIcon_fi mstrListBlockItemName" style="background-position:
2px 50%; padding-left: 23px;">Vorige Week</div>
</div>
<div class="mstrListBlockItem" title="Afgesloten 4 Weken">
<div class="mstrListBlockItem" title="Afgesloten 8 Weken">
<div class="mstrListBlockItem" title="Huidige Periode">
<div class="mstrListBlockItem" title="Vorige Periode">
<div class="mstrListBlockItem" title="Afgesloten 2 Perioden">
<div class="mstrListBlockItem" title="Selectie Datum Hiërarchie. Aangepast
wegens IServer crash icm. Metric prompts.">
<div class="mstrListBlockItem" title="Gisteren">
我认为我的问题在于确定需要使用哪个元素才能获得理想的结果
Sub JDWReport()
Dim objIE As InternetExplorer
Set objIE = New InternetExplorerMedium
objIE.Visible = True
objIE.navigate "URL"
Do While objIE.Busy = True Or objIE.readyState <> 4: DoEvents: Loop
objIE.document.getElementById("Uid").Value = "username"
objIE.document.getElementById("Pwd").Value = "password"
objIE.document.getElementById("3054").Click
Do While objIE.Busy = True Or objIE.readyState <> 4: DoEvents: Loop
objIE.navigate "URL2"
Do While objIE.Busy = True Or objIE.readyState <> 4: DoEvents: Loop
objIE.document.getElementsClassName("mstrBGIcon_fi
mstrListBlockItemName")(0).Click
objIE.Quit
End Sub
请参阅上面我正在使用的代码。 它卡在了objIE.document.getElementsClassName(“ mstrBGIcon_fi mstrListBlockItemName“)(0)。点击 我尝试根据HTML代码将此行更改为其他元素,并使用.click .selectedindex = 2,但这些行不起作用。
<div class="mstrListBlockItemSelected" title="Vorige Week">
当前它说mstrListBlockItemSelected,但是,当第一次导航到站点时,该类被定义为其余的mstrListBlockItem。
仅当您单击有问题的项目(从项目列表中)时,它将更改为选定。我的最终目标是使标题为“ Vorige Week”的班级从mstrListBlockItem更改为mstrListBlockItemSelected。
答案 0 :(得分:0)
我可以看到您正在使用HTML Table并在其中创建DIV。
我尝试搜索发现没有任何方法或属性可用于选择DIV中的文本。
我建议您使用任何HTML控件来选择其值。例如“选择选项”。
您可以尝试使用select创建下拉列表,然后使用下面的代码在其中选择任何值。
Sub Select_Item()
Dim post As Object, elem As Object
With CreateObject("InternetExplorer.Application")
.Visible = True
.navigate "C:\Users\WCS\Desktop\element.html"
While .Busy = True Or .ReadyState < 4: DoEvents: Wend
Set post = .Document.getElementById("ctl00_ContentPlaceHolder1_ddlCycleID")
For Each elem In post.getElementsByTagName("option")
If InStr(elem.Value, "10") > 0 Then elem.Selected = True: Exit For
Next elem
End With
End Sub
答案 1 :(得分:0)
您可以尝试使用属性=值CSS选择器:
ie.document.querySelector("[title='Vorige Week']").Selected = True
或
ie.document.querySelector("[title='Vorige Week']").Click