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}
解決策は非常にブラウザ固有です。 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>
${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
ダウンロード前とダウンロード後に、ファイルのMD5を確認する必要があります。 MD5は両方とも同じである必要があります。
ファイルがLinuxマシン上にあると仮定します-ダウンロードの前後:
この情報がお役に立てば幸いです。