簡體   English   中英

在Powershell中使用SendKeys從網站下載文件

[英]Download file from website using SendKeys in Powershell

我正在嘗試通過單擊文件圖標從特定網站下載文件。 網站登錄有效,但我希望使用擊鍵“ TAB”導航到excel文件,最后鍵入“ Enter”進行下載。 運行該代碼,但在Powershell中顯示為“ FALSE”。 任何建議表示贊賞! 謝謝。

參考:表格截圖

在此處輸入圖片說明

$url = "https://abcdefg.com" 
$username="test@gmail.com" 
$password="TestPW" 
$ie = New-Object -com internetexplorer.application; 
$ie.visible = $true; 
$ie.navigate($url); 
while ($ie.Busy -eq $true) 
{ 
    Start-Sleep -Milliseconds 1000; 
} 
$ie.Document.getElementById("txtEmail").value = $username 
$ie.Document.getElementByID("txtPassword").value=$password 
$ie.Document.getElementById("Login").Click();

Start-Sleep -Milliseconds 10000

$obj = new-object -com WScript.Shell
$obj.AppActivate('Internet Explorer')
$obj.SendKeys('{TAB}')
$obj.SendKeys('{TAB}')
$obj.SendKeys('{TAB}')
$obj.SendKeys('{TAB}')
$obj.SendKeys('{Enter}')

使用網絡抓取來找到您要點擊的鏈接並直接使用鏈接URL相比,您為什么要這樣做?

您的帖子實際上是此問答的重復副本。

使用PowerShell自動執行網站登錄和文件下載

SendKeys可以工作,但是它們非常笨拙,並且在不同的系統上可能無法按您期望的那樣工作。 有專門的工具可以更好地做到這一點, AutoITSeleniumWASP

---該WASP工具仍然有效,但是很長時間沒有更新。

結合使用帶有硒的PowerShell 2.0自動執行Internet Explorer,Firefox和Chrome

IE瀏覽器

接下來,您要從該站點獲取Internet Explorer驅動程序。 我建議使用2.41版,因為“自2014年4月15日起,不再支持IE 6”。 它必須駐留在當前的PATH中,因此您可能需要在腳本中修改PATH,以確保可以在其中找到可執行文件(IEDriverServer.exe)。 如果您想獲得32位還是64位版本,即使您擁有64位Windows,也要從32位開始。

此時,您將需要快速實例化Internet Explorer並導航到某個地方。 大。 我們開始做吧。

# Load the Selenium .Net library
Add-Type -Path "C:\selenium\WebDriver.dll" # put your DLL on a local hard drive!

# Set the PATH to ensure IEDriverServer.exe can found
$env:PATH += ";N:\selenium"

# Instantiate Internet Explorer
$ie_object = New-Object "OpenQA.Selenium.IE.InternetExplorerDriver"


# Great! Now we have an Internet Explorer window appear. We can navigate to a new URL:
$ie_object.Navigate().GoToURL( "http://www.bbc.co.uk/languages" )

# This worked! The call won’t return until the page download is complete.
# Next let’s click on a link from the link text:
$link = $ie_object.FindElementByLinkText( "Spanish" )
$link.Click()

# display current URL
$ie_object.Url

Selenium教程:有關Selenium WebDriver的所有知識

更新OP

至於...

但是,該文件沒有重定向的URL

然后,您需要更深入地研究該站點,以找到可以強制單擊的文件的錨點。

例:

# Scrape a web page with PowerShell

$w = Invoke-WebRequest -Uri 'https://www.reddit.com/r/PowerShell'
$w | Get-Member

$w.AllElements
$w.AllElements.Count
$w.Links.Count
$w.Links

$w.Forms
$w.Forms.Fields

$w.Forms[0]
$w.Forms[0].Fields

$w.RawContent

$w.ParsedHtml

一旦找到標簽名稱或類似名稱,就需要對其進行解析以從中獲取內容。

$w.AllElements | Where-Object -Property 'TagName' -EQ 'P' | Select-Object -Property 'InnerText'

對於表,您必須挖掘更多。

從PowerShell的Invoke-WebRequest中提取表

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM