菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
307
0

Download file from a URL using AutoIt, and run in Robot Framework. (Also can use in other application)

原创
05/13 14:22
阅读数 13483

What need to figure out?

1.Pass Download URL from Robot Framework to AutoIt.

2.Return File Save Path from AutoIt to Robot Framework.

 

Step 1: Write AutoIt Script in Notepad++, save as downloadFileFromURL.au3

#include <InetConstants.au3>

#include <MsgBoxConstants.au3>

#include <WinAPIFiles.au3>

 

; Download a file in the background.

; Wait for the download to complete.

 

Local $FileDownloadURL = $CmdLine[1]

;Local $FileDownloadURL = "https://test.com/installer.exe"

Local $FileSavePath = @TempDir & "\awsinstaller.exe"

 

; Download the file by waiting for it to complete. The option of 'get the file from the local cache' has been selected.

Local $iBytesSize = InetGet($FileDownloadURL, $FileSavePath, $INET_FORCERELOAD)

 

; Retrieve the filesize.

Local $iFileSize = FileGetSize($FileSavePath)

 

; Return with file save path

ConsoleWrite($FileSavePath)

 

Step 2: Right Click downloadFileFromURL.au3 , select Compile Script in the list.

downloadFileFromURL.au3 will be compiled to an exe.

 

Step 3: Call downloadFileFromURL.exe in Robot Framework.

${fileURL} Set Variable https://test.com/installer.exe

${exePath} Set Variable D:\\Tool\\downloadFileFromURL.exe

${result} Run Process ${exePath} ${fileURL}

log ${result.stdout}

 

Pass parameter from Robot Framework to AutoIt.

Use CmdLine provided by AutoIt

$CmdLine[0] ; Contains the total number of items in the array. $CmdLine[1] ; The first parameter. $CmdLine[2] ; The second parameter. ... $CmdLine[nth] ; The nth parameter e.g. 10 if the array contains 10 items.

Return Value from AutoIt to Robot Framework.

1.Use AutoIt's ConsoleWrite ,write value to stdout

2.Use ${result.stdout} returned by Robot Framework's Run Process , read value from stdout

 

 

 Compile AutoIt Script to exe

 

 

 Run exe in Robot Framework

 

 

 

为了增加稳定性,做了一下改进。

之前是通过IE浏览器打开安装的URL,很不稳定,改成使用AutoIt进行下载并启动安装.

附上完整的AutoIt脚本和Robot Framework脚本。

downloadFileFromURL.au3

#include <InetConstants.au3>
#include <MsgBoxConstants.au3>
#include <WinAPIFiles.au3>

; Download a file in the background.
; Wait for the download to complete.

;Local $FileDownloadURL = "https://test.com/installer.exe"
Local $FileDownloadURL = $CmdLine[1]
Local $FileName = $CmdLine[2]

Local $FileSavePath = @TempDir & "\" & $FileName

; Download the file by waiting for it to complete. The option of 'get the file from the local cache' has been selected.
Local $iBytesSize = InetGet($FileDownloadURL, $FileSavePath, $INET_FORCERELOAD)

; Retrieve the filesize.
Local $iFileSize = FileGetSize($FileSavePath)

; Return with file save path
ConsoleWrite($FileSavePath)

UninstallAndInstallOfficeUS.txt in Robot Framework

*** Settings ***
Test Timeout      5 minutes
Resource          ../../../04.BasicReferenceSet/businessReferenceSet.html
Resource          ../../../04.BasicReferenceSet/publicReference.html

*** Test Cases ***
InstallOfficeUS
    [Tags]    InstallOfficeUS
    [Setup]    Clean And Close Current App    ${processName}
    [Timeout]    10 minutes
    Delete File From Directory    ${TEMPDIR}/prerequisite.exe
    Delete File From Directory    ${TEMPDIR}/awsinstaller.exe
    Delete File From Directory    ${TEMPDIR}/setup.exe
    Clean Process    chrome
    Clean Process    OUTLOOK
    Clean Process    Teams
    ${fileDownloadURL}    Get Installation Link
    ${installFileName}    Fetch From Right    ${fileDownloadURL}    /
    ${exePath}    Join Path    ${EXECDIR}    06.The_Attachment    Tool    downloadFileFromURL.exe
    ${result}    Run Process    ${exePath}    ${fileDownloadURL}    ${installFileName}
    ${officeUSExePath}    Set Variable    ${result.stdout}
    Run Process    ${officeUSExePath}    timeout=10
    Win Wait    Morningstar Office Prerequisite 3.19 - InstallShield Wizard    TimeOut=120
    AutoItLibrary.Send    !N
    Win Wait    Morningstar Office Prerequisite 3.19 - InstallShield Wizard    InstallShield Wizard Completed    TimeOut=10
    AutoItLibrary.Send    !C
    Run Process    ${officeUSExePath}    timeout=120
    Win Wait    Morningstar Office - InstallShield Wizard    TimeOut=10
    Sleep    1
    AutoItLibrary.Send    !N
    Sleep    1
    AutoItLibrary.Send    !N
    Sleep    1
    AutoItLibrary.Send    !N
    Sleep    1
    AutoItLibrary.Send    !I
    Win Wait    Morningstar Office - InstallShield Wizard    Installing Morningstar Office    TimeOut=10
    Win Wait Close    Morningstar Office - InstallShield Wizard    Installing Morningstar Office    TimeOut=180
    Win Wait    Morningstar Office - InstallShield Wizard    InstallShield Wizard Completed    TimeOut=10
    AutoItLibrary.Control Click    strTitle=Morningstar Office - InstallShield Wizard    strText=InstallShield Wizard Completed    strControl=[CLASSNN:Button5]
    AutoItLibrary.Send    !F
    File Should Exist    C:\\Program Files (x86)\\Morningstar\\Office\\MStarAWD.exe    Install Failed!
    [Teardown]    Clean Process    SavUI

UninstallOfficeUS
    [Tags]    UninstallOfficeUS
    [Setup]    Clean And Close Current App    ${processName}
    Clean Process    msiexec
    AutoItLibrary.Run    C:\\Windows\\System32\\control.exe \ appwiz.cpl
    AutoItLibrary.Win Wait    Programs and Features    TimeOut=5
    AutoItLibrary.Win Activate    Programs and Features
    AutoItLibrary.Send    Morningstar Office
    AutoItLibrary.Send    {ENTER}
    Sleep    1
    AutoItLibrary.Send    !Y
    Win Wait    Morningstar Office    Please wait while Windows configures Morningstar Office    TimeOut=5
    Win Wait Close    Morningstar Office    Please wait while Windows configures Morningstar Office    TimeOut=180
    Sleep    2
    [Teardown]    Run Keywords    Win Close    Programs and Features
    ...    AND    Clean Process    Un_A

UninstallOfficePrerequisite
    [Tags]    UninstallOfficePrerequisite
    [Setup]    Clean And Close Current App    ${processName}
    Clean Process    msiexec
    AutoItLibrary.Run    C:\\Windows\\System32\\control.exe \ appwiz.cpl
    AutoItLibrary.Win Wait    Programs and Features
    AutoItLibrary.Win Activate    Programs and Features
    AutoItLibrary.Send    Morningstar Office Prerequisite 3.19
    AutoItLibrary.Send    {ENTER}
    Sleep    1
    AutoItLibrary.Send    !Y
    Sleep    3
    [Teardown]    Run Keywords    Win Close    Programs and Features
    ...    AND    Clean Process    Un_A

  

发表评论

0/200
307 点赞
0 评论
收藏