Powershell "InternetExplorer.Application" 点击下拉菜单

Powershell "InternetExplorer.Application" click on dropdown

我正在尝试使用 Powershell 单击 "CSV (comma delimited)",以便能够保存此报告。

这是下拉菜单背后的代码。

<div class="MenuBarBkGnd" id="ReportViewerControl_ctl09_ctl04_ctl00_Menu" style="display: block; visibility: visible; position: absolute; z-index: 1;">
                                        <div class="DisabledButton">
                                            <a title="XML file with report data" class="ActiveLink" style="padding: 8px 8px 3px; font-family: Verdana; font-size: 8pt; text-decoration: none; display: block; white-space: nowrap;" onclick="$find('ReportViewerControl').exportReport('XML');" href="javascript:void(0)" alt="XML file with report data">XML file with report data</a>
                                        </div><div class="DisabledButton">
                                            <a title="CSV (comma delimited)" class="ActiveLink" style="padding: 8px 8px 3px; font-family: Verdana; font-size: 8pt; text-decoration: none; display: block; white-space: nowrap;" onclick="$find('ReportViewerControl').exportReport('CSV');" href="javascript:void(0)" alt="CSV (comma delimited)">CSV (comma delimited)</a>
                                        </div><div class="DisabledButton">
                                            <a title="PDF" class="ActiveLink" style="padding: 8px 8px 3px; font-family: Verdana; font-size: 8pt; text-decoration: none; display: block; white-space: nowrap;" onclick="$find('ReportViewerControl').exportReport('PDF');" href="javascript:void(0)" alt="PDF">PDF</a>
                                        </div><div class="DisabledButton">
                                            <a title="MHTML (web archive)" class="ActiveLink" style="padding: 8px 8px 3px; font-family: Verdana; font-size: 8pt; text-decoration: none; display: block; white-space: nowrap;" onclick="$find('ReportViewerControl').exportReport('MHTML');" href="javascript:void(0)" alt="MHTML (web archive)">MHTML (web archive)</a>
                                        </div><div class="DisabledButton">
                                            <a title="Excel" class="ActiveLink" style="padding: 8px 8px 3px; font-family: Verdana; font-size: 8pt; text-decoration: none; display: block; white-space: nowrap;" onclick="$find('ReportViewerControl').exportReport('EXCELOPENXML');" href="javascript:void(0)" alt="Excel">Excel</a>
                                        </div><div class="DisabledButton">
                                            <a title="TIFF file" class="ActiveLink" style="padding: 8px 8px 3px; font-family: Verdana; font-size: 8pt; text-decoration: none; display: block; white-space: nowrap;" onclick="$find('ReportViewerControl').exportReport('IMAGE');" href="javascript:void(0)" alt="TIFF file">TIFF file</a>
                                        </div><div class="DisabledButton">
                                            <a title="Word" class="ActiveLink" style="padding: 8px 8px 3px; font-family: Verdana; font-size: 8pt; text-decoration: none; display: block; white-space: nowrap;" onclick="$find('ReportViewerControl').exportReport('WORDOPENXML');" href="javascript:void(0)" alt="Word">Word</a>
                                        </div><div class="HoverButton">
                                            <a title="TXT (Pipe delimited)" class="ActiveLink" style="padding: 8px 8px 3px; font-family: Verdana; font-size: 8pt; text-decoration: none; display: block; white-space: nowrap;" onclick="$find('ReportViewerControl').exportReport('PIPE');" href="javascript:void(0)" alt="TXT (Pipe delimited)">TXT (Pipe delimited)</a>
                                        </div>
                                    <div style="left: 0px; top: 0px; width: 26px; height: 368px; position: absolute; z-index: -1; opacity: 0.05; background-color: black;"></div></div>

下面的代码调出下拉列表。

$DownloadButton = $ie.Document.getElementById('ReportViewerControl_ctl09_ctl04_ctl00_ButtonImgDown')
$DownloadButton.click()

我试图用你的代码进行测试。我在单击 CSV(逗号分隔)选项时放置了一条警告消息。因此,当代码单击该特定选项时,它将显示一条警告消息。这表明代码点击了正确的元素。

此处修改HTML:

<!doctype html>
<html>
<head>
<script>
function abc()
{
    alert("Clicked...");
}
</script>
</head>
<body>
<div class="MenuBarBkGnd" id="ReportViewerControl_ctl09_ctl04_ctl00_Menu" style="display: block; visibility: visible; position: absolute; z-index: 1;">
                                        <div class="DisabledButton">
                                            <a title="XML file with report data" class="ActiveLink" style="padding: 8px 8px 3px; font-family: Verdana; font-size: 8pt; text-decoration: none; display: block; white-space: nowrap;" onclick="$find('ReportViewerControl').exportReport('XML');" href="javascript:void(0)" alt="XML file with report data">XML file with report data</a>
                                        </div><div class="DisabledButton">
                                            <a title="CSV (comma delimited)" class="ActiveLink" style="padding: 8px 8px 3px; font-family: Verdana; font-size: 8pt; text-decoration: none; display: block; white-space: nowrap;" onclick="abc()" href="javascript:void(0)" alt="CSV (comma delimited)">CSV (comma delimited)</a>
                                        </div><div class="DisabledButton">
                                            <a title="PDF" class="ActiveLink" style="padding: 8px 8px 3px; font-family: Verdana; font-size: 8pt; text-decoration: none; display: block; white-space: nowrap;" onclick="$find('ReportViewerControl').exportReport('PDF');" href="javascript:void(0)" alt="PDF">PDF</a>
                                        </div><div class="DisabledButton">
                                            <a title="MHTML (web archive)" class="ActiveLink" style="padding: 8px 8px 3px; font-family: Verdana; font-size: 8pt; text-decoration: none; display: block; white-space: nowrap;" onclick="$find('ReportViewerControl').exportReport('MHTML');" href="javascript:void(0)" alt="MHTML (web archive)">MHTML (web archive)</a>
                                        </div><div class="DisabledButton">
                                            <a title="Excel" class="ActiveLink" style="padding: 8px 8px 3px; font-family: Verdana; font-size: 8pt; text-decoration: none; display: block; white-space: nowrap;" onclick="$find('ReportViewerControl').exportReport('EXCELOPENXML');" href="javascript:void(0)" alt="Excel">Excel</a>
                                        </div><div class="DisabledButton">
                                            <a title="TIFF file" class="ActiveLink" style="padding: 8px 8px 3px; font-family: Verdana; font-size: 8pt; text-decoration: none; display: block; white-space: nowrap;" onclick="$find('ReportViewerControl').exportReport('IMAGE');" href="javascript:void(0)" alt="TIFF file">TIFF file</a>
                                        </div><div class="DisabledButton">
                                            <a title="Word" class="ActiveLink" style="padding: 8px 8px 3px; font-family: Verdana; font-size: 8pt; text-decoration: none; display: block; white-space: nowrap;" onclick="$find('ReportViewerControl').exportReport('WORDOPENXML');" href="javascript:void(0)" alt="Word">Word</a>
                                        </div><div class="HoverButton">
                                            <a title="TXT (Pipe delimited)" class="ActiveLink" style="padding: 8px 8px 3px; font-family: Verdana; font-size: 8pt; text-decoration: none; display: block; white-space: nowrap;" onclick="$find('ReportViewerControl').exportReport('PIPE');" href="javascript:void(0)" alt="TXT (Pipe delimited)">TXT (Pipe delimited)</a>
                                        </div>
                                    <div style="left: 0px; top: 0px; width: 26px; height: 368px; position: absolute; z-index: -1; opacity: 0.05; background-color: black;"></div></div>
</body>
</html>

VBA代码:

Sub demo()

    Dim URL As String
    Dim IE As Object
    Dim i As String

    Set IE = CreateObject("InternetExplorer.Application")


    IE.Visible = True


    URL = "D:\Backup20190913\tests1.html"


    IE.Navigate URL


    Do While IE.ReadyState = 4: DoEvents: Loop
    Do Until IE.ReadyState = 4: DoEvents: Loop

    i = IE.document.getelementsbytagname("a").Item(1).innerHTML


    If i = "CSV (comma delimited)" Then
        IE.document.getelementsbytagname("a").Item(1).Click

    End If

    Set IE = Nothing


End Sub

此 VBA 代码将找到 link 并尝试将其内部 HTML 与静态值相匹配。如果匹配则点击它。

输出:

另外,您可以根据自己的需求尝试修改代码。如果您有任何疑问,可以告诉我们。