我无法弄清楚如何使用 vba 自动单击位于网页中一组选项卡之一的按钮。
我在firefox中使用inspect元素来找出我想要单击的按钮的元素id(这是“runscreen”但是在查看实际网页的源代码时我找不到这个元素id,而且按钮与另一个共享这个元素id另一个选项卡上的按钮。两个按钮的“运行”与其内部文本相同,“运行屏幕”与其元素 ID 相同,但具有不同的元素隐藏。我无法弄清楚为什么通过检查按钮可以查看元素 ID 但不可见通过选择使用 ie 或 firefox 查看网页的源代码。我的 excel 版本是 2010,我使用的是 ie9。在我看来,网页代码中唯一隐藏的部分是处理选项卡中的元素的部分。我认为这可能与
img src="/images/new/ajax-loader-trans.gif"
我首先尝试了这段代码:
'IE.document.getElementById("runscreen").click
vba 返回了“需要对象”的错误,我猜是因为元素 id 不是直接在网页源代码上,而是以某种方式隐藏
然后我尝试了
Call IE.document.parentWindow.execScript("runscreen()", "JavaScript")
我认为单击按钮时页面以某种方式使用了一个功能,但我不知道是否是这种情况。我一直在寻找单击按钮的解决方案,但一直无法弄清楚。任何帮助将不胜感激。
这是我在使用 firefox 检查要单击的元素时找到的代码(但是当我在 ie/firefox 中选择查看源时,此代码不可见):
<a id="runScreen" class="general-button general-button-green help-enabled" href="javascript: void(jsScreen.runScreen(true));" onfocus="blur();" hid="screen-rules-run">
<span>
Run
</span>
而且这里更多的是周边代码(查看网页源代码时只能看到这段代码的第一行)
<div id="screentabcontent" class="tabs-nav-content ui-corner-bottom">
<div id="freeform-cont">
<div class="vocab-ref"> … </div>
</div>
<div id="screen-criteria-section">
<div id="commonCont">
<div id="commonButtons" style="padding-bottom:4px; float:left; "> … </div>
<div style="text-align:right">
<span class="parameterTitle"> … </span>
<span class="parameterValue"> … </span>
<span style="padding-left: 10px">
<a id="runScreen" class="general-button general-button-green help-enabled" href="javascript: void(jsScreen.runScreen(true));" onfocus="blur();" hid="screen-rules-run">
<span> … </span>
</a>
</span>
<span style="padding-left: 5px"> … </span>
<span id="universeTotal" class="universe-subtotal"> … </span>
</div>
<div id="commonRules" style="clear:both; zoom: 1"> … </div>
</div>
这是当我在 ie/firefox 中选择查看源时可见的选项卡的代码,我尝试单击的按钮位于"rules"
具有元素 id 的选项卡中"scrtab_1"
。此代码的最后一部分与上述代码的第一部分部分匹配:
<div id="screentabs" style="zoom: 1;">
<div class="tabs-nav">
<table cellpadding="0" cellspacing="0" border="0"><tr>
<td class="toggle-width"><a href="javascript:void(jsScreen.toggleWide());" onfocus="blur()"><img id="toggleScrWidth" src="/images/new/width-wide.gif" width="16" height="16" border="0" title="Toggle Display Width" alt=""/></a></td>
<td ><a id="scrtab_0" class="scr-tab-link help-enabled" hid="screen-about-user" href="javascript: void(0);" onfocus="blur()">About</a></td>
<td ><a id="scrtab_5" class="scr-tab-link help-enabled" hid="screen-notes" href="javascript: void(0);" onfocus="blur()">Notes</a></td>
<td ><a id="scrtab_7" class="scr-tab-link help-enabled" hid="screen-notes" href="javascript: void(0);" onfocus="blur()">Main Settings</a></td>
<td class="on"><a id="scrtab_1" class="scr-tab-link help-enabled" hid="screen-rules" href="javascript: void(0);" onfocus="blur()">Rules</a></td>
<td ><a id="scrtab_6" class="scr-tab-link help-enabled" hid="screen-hedge" href="javascript: void(0);" onfocus="blur()">Hedge Rules</a></td>
<td ><a id="scrtab_2" class="scr-tab-link help-enabled" hid="screen-results" href="javascript: void(0);" onfocus="blur()">Results</a></td>
<td ><a id="scrtab_3" class="scr-tab-link help-enabled" hid="screen-backtest" href="javascript: void(0);" onfocus="blur()">Backtest</a></td>
<td ><a id="scrtab_4" class="scr-tab-link help-enabled" hid="screen-advancedbacktest" href="javascript: void(0);" onfocus="blur()">Advanced Backtest</a></td>
</tr></table>
</div>
<div id="screentabcontent" class="tabs-nav-content ui-corner-bottom"><div align="center"><img src="/images/new/ajax-loader-trans.gif" alt="loading"></div></div>
</div>
</div>
</div>