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