gpt4 book ai didi

html - VBA 与网页上的单选按钮交互

转载 作者:太空狗 更新时间:2023-10-29 16:36:56 24 4
gpt4 key购买 nike

编辑:几个月后,我再次尝试使用我第一次尝试的相同语法(在下面发布)。出于某种原因,它奏效了!也许除了我的语法之外的其他原因导致了无效......结束编辑

我已经在论坛上搜索了几个小时,试图找到解决这个问题的方法,但我尝试过的所有方法都不起作用。

我正在使用 VBA 自动执行在 SurveyMonkey 上创建调查的过程。到目前为止,我已经能够:

  • 登录我的帐户,
  • 点击几个超链接创建一个新的响应收集器,
  • 为收集者命名,
  • 转到收集器设置,
  • 然后,选择四个单选按钮中的三个来更改收集器设置。

问题不在于我无法选择单选按钮;我的代码选择前三个按钮就好了。令我疑惑的是第四个按钮没有变化!我对每个按钮都使用相同的过程,所以我不明白为什么最后一个按钮不会被选中。

这是我的代码部分:

objIE.Document.getElementById("rdlResponseType_1").Click    'Allow multiple responses = Yes
objIE.Document.getElementById("rdlResponseEdit_1").Click 'Allow Responses to be Edited = Yes
objIE.Document.getElementById("rdlThankyou_1").Click 'Display a "Thank You" page? = Yes
objIE.Document.getElementById("rdlCompleteOpt_1").Click 'Survey Completion = Close Window

这是单选按钮的 HTML:

<table border="0" cellpadding="0" cellspacing="0" style="width: 100%;">
<tr id="CompleteOptDesc">
<td style="">&nbsp;</td>
<td>After the respondent leaves the survey:</td>
</tr>

<tr id="CompleteOptItems">
<td style="">&nbsp;</td>
<td align="left" nowrap="nowrap" valign="top">
<table id="rdlCompleteOpt" class="Clean radioList" OnClick="radioToggle('rdlCompleteOpt', '0', 'panLink');" name="rdlCompleteOpt" border="0" style="white-space: nowrap">
<tr>
<td><span style="white-space: nowrap"><input id="rdlCompleteOpt_0" type="radio" name="rdlCompleteOpt" value="0" checked="checked" /><label for="rdlCompleteOpt_0"><b>Redirect</b> to your own webpage.</label></span></td>
</tr><tr>
<td><input id="rdlCompleteOpt_1" type="radio" name="rdlCompleteOpt" value="2" /><label for="rdlCompleteOpt_1"><b>Close Window</b></label></td>
</tr>
</table>

这是 radio 切换部分的代码:

<td width="65%" valign="top">
<div id="panLink" style="DISPLAY:inline">

<div class="URLinfo">

<b>Enter a URL</b> to jump to upon leaving the survey:<br />
<div title="REQUIRED: Enter URL (255 character max)" style="padding:4px 0 2px 0;">
<input name="txtWebLink" type="text" value="http://www.surveymonkey.com/" maxlength="255" size="40" id="txtWebLink" class="RQR opaque" />
</div>
<span class="tip">Example: <u>http://www.mysite.com/home.html</u></span>
</div>

</div>
</td>

如有任何建议,我们将不胜感激!

最佳答案

有几件事需要考虑:

  1. 你什么时候调用这段代码? OnNavigate 还是 DocumentComplete?可能对象还不存在。您可以通过使用断点并为表达式添加监视来检查它是否存在

    objIE.Document.getElementById("rdlCompleteOpt_1")

    使用 OnDocumentComplete 确保 HTML 组件存在

  2. 您调用点击函数的方式可能导致了问题。试试这个

    Call objIE.Document.getElementById("rdlCompleteOpt_1").Click()

    我怀疑它可能会产生很大的影响,但我喜欢验证一切。

  3. 通过移除“层”来隔离问题的原因。您能否使用从 IE 开发工具 (F12) JavaScript 控制台调用的纯 JavaScript 来完成此操作?

    如果不是,则问题在于您与页面元素的交互方式。如果是,那么我们需要弄清楚是什么导致了 VBA 完好无损的问题。再次查看 #2,因为它可能是问题的原因。

    此外,如果您更改元素的 HTML 顺序,是否会出现此问题?如果你这样调用它呢?

    objIE.Document.getElementById("rdlCompleteOpt_1").Click     'Survey Completion = Close Window
    objIE.Document.getElementById("rdlResponseType_1").Click 'Allow multiple responses = Yes
    objIE.Document.getElementById("rdlResponseEdit_1").Click 'Allow Responses to be Edited = Yes
    objIE.Document.getElementById("rdlThankyou_1").Click 'Display a "Thank You" page? = Yes

    那么它会起作用还是“最后一个”项目会失败?

  4. 不太可能是原因,但 HTML 资源缺少关闭单元格、行和表格的代码。

            </tr>

    </table>
    <!-- missing -->
    </td>
    </tr>
    </table>
  5. 虽然不是您问题的具体答案,但我相信这可能符合您帖子的意图。由于您想管理一个 surveymonkey 收集器,请查看 SurveyMonkey API here因为使用 API 会给您带来很多好处。

    • 您不必依赖可能会更改或超出您控制范围的用户元素
    • 您可以使用受控和“契约(Contract)化”界面来管理涵盖您的信息,以备将来更改(假设他们不弃用和停止支持 API)

关于html - VBA 与网页上的单选按钮交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15579830/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com