使用 ie. 通过自动化选择并单击 HTML 选项。VB 中的 DOM

Selecting and clicking an HTML option via automation using ie.DOM in VB

提问人:IrogSinta 提问时间:4/2/2022 更新时间:4/5/2022 访问量:39

问:

我无法选择一个选项并以编程方式单击它,即.DOM。以下是带有选项和 onchange javascript 调用的 HTML 的样子:code behind dropbox

下拉列表如下所示:Select Report

这是我尝试过的,似乎对页面没有任何影响

Set ddl = ie.Document.getElementById("ddlReports")
    For Each itm In ddl.getelementsbytagname("option")
        If itm.Value = "12" Then itm.SELECTED = True: Exit For
    Next itm
    itm.Click

我也试过这个,但它只是清除页面并返回 0。

ie.Navigate "javascript:setTimeout('__doPostBack(\'ddlReports\',\'\')', 0)"

它应该显示一个按钮,允许我检索报告。

DOM Internet-Explorer 自动化

评论

0赞 Yu Zhou 4/4/2022
当它在IE中不起作用时,是否有任何错误显示?我无法使用您提供的代码重现问题,它可以正确选择下拉列表。您能否提供您自动化的网站的网址,以便我们进行测试?或者,您可以提供可以重现问题的最小代码片段。
0赞 IrogSinta 4/5/2022
你是对的,它确实选择了下拉列表中的项目。我以为不是因为itm。点击不起作用。当您手动选择它时,页面将显示一个用于提取报告的按钮。我无法让该按钮显示。单击 或 Navigate Javascript 行。不幸的是,需要凭据才能查看该页面。除了它之外,你知道什么吗?点击我可以试试吗?
0赞 IrogSinta 4/5/2022
我想通了。我需要为表单做一个提交。

答:

0赞 IrogSinta 4/5/2022 #1

事实证明,我需要在下拉列表中选择一个选项后提交表格。这是有效的代码。

Set ddl = ie.Document.getElementById("ddlReports")
For Each itm In ddl.getelementsbytagname("option")
    If itm.Value = "12" Then itm.SELECTED = True: Exit For
Next itm
ie.Document.getElementById("frmAshleyExtracts").Submit