我是VBA的新手,但是在不同网站的帮助下,我非常感激,我设法将一个宏连接到某个网站并填入一个值为“已关闭”的菜单然后单击确定。
问题是菜单中出现的值,但就好像它没有被识别出来一样。单击“确定”后,表示未输入任何值。
我认为有一些与javascript:void(0)链接有关,但无法找到确切的内容。
我认为我的问题与此未解决的帖子有关:Use vba to trigger html anchor href="javascript:void(0)"
以下是HTML代码:
<div class="modal ui-dialog-content ui-widget-content" id="pausingModal" scrolltop="0" scrollleft="0" style="width: auto; min-height: 0px; height: auto;"><label>Please specify the reason</label><div class="row"><div class="select2-container select2 reason select2-container-active select2-dropdown-open" id="s2id_autogen2" style="width: 100%"><a href="javascript:void(0)" class="select2-choice select2-default" tabindex="-1"> <span class="select2-chosen" id="select2-chosen-3">Select a reason</span><abbr class="select2-search-choice-close"></abbr> <span class="select2-arrow" role="presentation"><b role="presentation"></b></span></a><label for="s2id_autogen3" class="select2-offscreen"></label><input class="select2-focusser select2-offscreen" type="text" aria-haspopup="true" role="button" aria-labelledby="select2-chosen-3" id="s2id_autogen3" disabled=""></div><select class="select2 reason select2-offscreen" style="width: 100%" tabindex="-1" title=""><option></option><optgroup label="Related"><option data-pause-type="hard_pause" data-show-text-area="false" value="1">Closed</option>
这是VBA代码:
'Select the reason For Each obj In objIE.Document.getElementsByTagName("span")
If obj.id = "select2-chosen-3" Then
obj.Focus
obj.innerText = "Closed"
Exit For
End If
Next
' Wait
Do While objIE.Busy = True
DoEvents
Loop
Do While objIE.readyState <> 4
DoEvents
Loop
Sleep 待ち時間
此处的值会显示在下拉框中。但就好像网站不会将其识别为已选中。我尝试了以下代码来“触发”该值而没有运气:
'Trigger the value
For Each obj In objIE.Document.getElementsByTagName("a")
If obj.className = "select2-choice select2-default" Then
obj.Click
Exit For
End If
Next
有人能指出我正确的方向吗?
答案 0 :(得分:0)
所以我尝试更改代码以输入文本而不是选择它:
public function post(){
return $this->belongsToMany(Post::class, 'category_post');
}
文本被选中,但验证它仍然没有运气。 see here