2016-03-21 118 views
0

我正在創建一個腳本,用於自動執行當前正在關閉的手動過程。爲了讓進程的背景:登錄到https網站並使用powershell下載文件

  1. 用戶登錄到HTTPS網站
  2. 點擊一個鏈接
  3. 進入日期範圍
  4. 下載文本文件
  5. 重命名文本文件

從當用戶點擊鏈接下載文件時,我可以判斷的日期範圍可以在URL中操作。例如: https://website/path/report&beginDate=3/18/2016%2000:00&endDate=3/18/2016%2023:59&download

此文件下載總是在前一天完成,所以如果我在星期二這樣做,我的日期範圍將爲星期一的日期。

附表:

  • 星期一:下載週六和週日作爲獨立的文件
  • 週二:下載週一的文件
  • 週三:下載週二的文件
  • 週四:下載週三的文件
  • 週五:下載星期四的文件
  • 星期六:下載星期五的文件

因此,腳本將不得不查詢正在運行的PC或某種ntp源,然後根據當天的情況使用IF/THEN。它還需要將該自定義日期傳遞到URL以下載文件。然後一旦文件被下載,將其重命名爲YYYYMMDD.txt文件。

回答

1

我會用Selenium。他們有一個.NET庫,這意味着你可以在Powershell中使用它。

這是他們的.NET Documentation。我建議使用chrome driver,因爲它往往更可靠。

本質上,請下載.NET library for Selenium (currently v2.53),並將所需的.dll文件放在與chromedriver.exe文件相同的目錄中。

然後,在Powershell中,使用Add-Type cmdlet導入您的DLL。

從那裏,你準備好了!

這是一個示例腳本,轉到Google並輸入搜索詞。

> Add-Type -Path C:\dev\selenium\*.dll 
> $driver = New-Object OpenQA.Selenium.Chrome.ChromeDriver 
Starting ChromeDriver 2.21.371459 (36d3d07f660ff2bc1bf28a75d1cdabed0983e7c4) on port 49693 
Only local connections are allowed. 
> $driver.Navigate().GoToUrl("https://google.com") 
> $inputField = $driver.FindElementById("lst-ib") 
> $inputField.SendKeys("My Search Term") 
> $inputField.Submit() 

儘管他們的文檔有點難以瀏覽,但它確實是學習可用方法的最佳方式。

此外,您可以將您已選擇的元素傳遞到Get-Member cmdlet,以查看可用的方法和屬性。

> $inputField | Get-Member 


    TypeName: OpenQA.Selenium.Remote.RemoteWebElement 

Name   MemberType Definition 
----   ---------- ---------- 
Clear   Method  void Clear(), void IWebElement.Clear() 
Click   Method  void Click(), void IWebElement.Click() 
Equals  Method  bool Equals(System.Object obj) 
FindElement Method  OpenQA.Selenium.IWebElement (etc...)