web-dev-qa-db-ja.com

RobotFrameworkダウンロードファイル

RobotFrameworkを使用しています。

私のHTMLページには、シンプルなボタンがあります。それをクリックすると、PDFファイルがダウンロードされます。

ファイルがダウンロードされているかどうかをRobotFrameworkで確認するにはどうすればよいですか?

Tks

私は解決策を見つけました、@ ombre42へのtks:

${SERVER}                  ${SERVER_DEV}
${NAME}                 Robot
${FILE_NAME}                Robot.pdf
${CLASS_NAME}               in
${DOWNLOAD_DIRECTORY}       C:\\robot_download

Scenario: User can download
    Create Directory    ${DOWNLOAD_DIRECTORY}
    ${CHROME_OPTIONS}=  Evaluate    sys.modules['Selenium.webdriver'].ChromeOptions()   sys, Selenium.webdriver
    ${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    ${SERVER}
    Click Element ${NAME}
    Wait Until Element Is Visible   css=div.${CLASS_NAME}   8
    Page Should Contain ${NAME}
    Set Selenium Speed  10s
    Download PDF    ${NAME}
    File Should Exist   C:\\robot_download\\${FILE_NAME}
8
Raphael

解決策は非常にブラウザ固有です。 Chromeの場合、ファイルをダウンロードする場所をChromeに指示できます。新しいフォルダを選択すると、ダウンロードのステータスを監視できます。また、PDFをダウンロードしているため、PDFがダウンロードされずに表示されないようにするには、PDFプラグインを無効にする必要があります。これは、簡単なページとPDFファイルを使用して私のマシンで機能したテストです。

*** 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}

Download.htmlの内容:

<html><body><a href="file.pdf" id="link">Click Here</a></body></html>
15
ombre42
${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

ファイルをさらに確認するには$ {content}ファイルを取得$ {download_dir} /filename.pdf $ {count_file}行数を取得$ {content}

上記は基本的なアサーションに使用できます。その他のキーワードについては、リンクを確認してください http://robotframework.org/robotframework/latest/libraries/OperatingSystem.html

2
Royalyn H

ダウンロード前とダウンロード後に、ファイルのMD5を確認する必要があります。 MD5は両方とも同じである必要があります。

ファイルがLinuxマシン上にあると仮定します-ダウンロードの前後:

  1. SSHライブラリを使用してLinuxマシンにログインします
  2. 次のコマンドを実行します:#md5sum PATH_TO_FILE
  3. 出力を変数に格納します。
  4. 変数値を比較する

この情報がお役に立てば幸いです。

0
Bahubali Patil