2016-04-19 58 views
0

每個月我都需要從同一供應商的很多不同賬戶中提取大量賬單。我已經讓我的腳本登錄到這些帳戶並導航到正確的站點。 問題是,該網站有很多賬單,我只想要最近的賬單。通常情況下,網站上的第一個鏈接,格式如下: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> 

我只是不能讓我的腳本點擊鏈接。有任何想法嗎?我已經嘗試過多種方式來獲得鏈接,但是毫無效果(當量,-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

獲取幫助調用-的WebRequest -Full。你也可能需要一個像fiddler這樣的工具:http://www.telerik.com/fiddler。在任何情況下你最好發佈你到目前爲止 –

回答

0

首先,你必須讓「一個「的元素,你可以這樣做:

$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()