电源外壳;点击许多类似链接中的特定链接

时间:2016-04-19 05:56:35

标签: powershell

每个月我都必须从同一家提供商的很多不同帐户中获取大量账单。我已经获得了我的脚本登录这些帐户并导航到正确的站点。 问题是,在该网站上有很多账单,我只想最新的。通常是网站上的第一个链接,格式如下:

<div class="dataTable-cell dataTable-cell--w20">
                <div class="btn btn--secondary">
                    <a href="/myaccount/bills/bill_download/stringofcharacters" onclick="track('bill_download',{'prop3':'Button:bills','events92':1});">Download</a>
                </div>
            </div>

我无法让我的脚本点击链接。有任何想法吗?我已经尝试过多种方法来获取链接,但没有任何效果(-eq,-match,-contains等) 这就是我到目前为止所做的:

$username = "username" 
$password = "password" 
$ie = New-Object -com InternetExplorer.Application 
$ie.visible=$true
$ie.navigate("https://provider.domain/login") 
while($ie.ReadyState -ne 4) {start-sleep -m 100} 
$ie.document.getElementById("IDToken1").value= "$username" 
$ie.document.getElementById("IDToken2").value = "$password" 
$loginBtn = $ie.Document.getElementById("Login.Submit")
$loginBtn.click();
start-sleep 5
$ie.navigate("https://provider.domain/myaccount/bills/") 
start-sleep 5

1 个答案:

答案 0 :(得分:0)

首先,你必须得到“a”元素,你可以这样做:

$aElements = $ie.Document.getElementsByTagName("a")

肯定有很多。所以你必须在其中选择一个。从你的例子我可以看到它有textContent“下载”,所以使用这段代码:

$downloadLink = ($aElements | where {$_.textContent -like "Download"})

但是,如果几乎没有带有“下载”文本的链接,而您只需要首先使用,请使用以下内容:

$downloadLinks = ($aElements | where {$_.textContent -like "Download"})
$downloadLink = $downloadLinks | Select-Object -First 1

最后,你可以做到

$downloadLink.click()