Robot Framework Download File

前端 未结 3 1961
借酒劲吻你
借酒劲吻你 2020-12-29 11:56

I use Robot Framework.

On my HTML page I have a simple button. When you click on it, it downloads a pdf file.

How can I check with Robot Framework if the fil

相关标签:
3条回答
  • 2020-12-29 12:11
    ${home_dir}         Get Environment Variable    HOME
    ${download_dir}     Join Path   ${home_dir}     Downloads
    ${result}    Run Keyword And Return Status  File Should Exist   
    ${download_dir}/filename.pdf
    

    To check further on the file ${content} Get File ${download_dir}/filename.pdf ${count_file} Get Line Count ${content}

    Above can be used for basic assertion For more keywords please check the link http://robotframework.org/robotframework/latest/libraries/OperatingSystem.html

    0 讨论(0)
  • 2020-12-29 12:16

    You need to check the MD5 of the file - before download and after download. Both the MD5 should be same.

    Assuming file is on Linux machine - before and after download :

    1. Login to linux machine using SSH library
    2. Run the command : #md5sum PATH_TO_FILE
    3. Store the output in a variable.
    4. Compare the variable value

    Hope so this information was helpful.

    0 讨论(0)
  • 2020-12-29 12:31

    The solution is very browser specific. For Chrome, you can tell Chrome where to download files. Choosing a new folder allows you to monitor the status of the download. Also, since you are downloading a PDF, disabling the PDF plugin is necessary to prevent the PDF from being displayed instead of downloaded. Here is a test that worked on my machine using a simple page and PDF file.

    *** Settings ***
    Test Teardown     Close All Browsers
    Library           Selenium2Library
    Library           OperatingSystem
    
    *** Test Cases ***
    Download PDF
        # create unique folder
        ${now}    Get Time    epoch
        ${download directory}    Join Path    ${OUTPUT DIR}    downloads_${now}
        Create Directory    ${download directory}
        ${chrome options}=    Evaluate    sys.modules['selenium.webdriver'].ChromeOptions()    sys, selenium.webdriver
        # list of plugins to disable. disabling PDF Viewer is necessary so that PDFs are saved rather than displayed
        ${disabled}    Create List    Chrome PDF Viewer
        ${prefs}    Create Dictionary    download.default_directory=${download directory}    plugins.plugins_disabled=${disabled}
        Call Method    ${chrome options}    add_experimental_option    prefs    ${prefs}
        Create Webdriver    Chrome    chrome_options=${chrome options}
        Goto    http://localhost/download.html
        Click Link    link    # downloads a file
        # wait for download to finish
        ${file}    Wait Until Keyword Succeeds    1 min    2 sec    Download should be done    ${download directory}
    
    *** Keywords ***
    Download should be done
        [Arguments]    ${directory}
        [Documentation]    Verifies that the directory has only one folder and it is not a temp file.
        ...
        ...    Returns path to the file
        ${files}    List Files In Directory    ${directory}
        Length Should Be    ${files}    1    Should be only one file in the download folder
        Should Not Match Regexp    ${files[0]}    (?i).*\\.tmp    Chrome is still downloading a file
        ${file}    Join Path    ${directory}    ${files[0]}
        Log    File was successfully downloaded to ${file}
        [Return]    ${file}
    

    Contents of download.html:

    <html><body><a href="file.pdf" id="link">Click Here</a></body></html>
    
    0 讨论(0)
提交回复
热议问题