2016-02-09 14 views
7

Używam programu Robot Framework.Robot Framework Pobierz plik

Na mojej stronie HTML mam prosty przycisk. Kiedy klikniesz, pobierze plik pdf.

Jak sprawdzić w środowisku Robot Framework, czy plik został pobrany?

TKS

znalazłem rozwiązanie, TKS @ ombre42:

${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} 
+0

Z której przeglądarki korzystasz? – ombre42

+0

Używam Chrome. – Raphael

Odpowiedz

10

Rozwiązanie jest bardzo specyficzny przeglądarki. W Chrome możesz powiedzieć Chrome, gdzie pobierać pliki. Wybór nowego folderu umożliwia monitorowanie statusu pobierania. Ponadto, ponieważ pobierasz plik PDF, konieczne jest wyłączenie wtyczki PDF, aby zapobiec wyświetlaniu pliku PDF zamiast pobranego. Oto test, który działał na moim komputerze za pomocą prostej strony i pliku 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} 

Zawartość download.html:

<html><body><a href="file.pdf" id="link">Click Here</a></body></html> 
+0

IE można to zrobić? – user2520217

0

Trzeba sprawdzić MD5 pliku - przed pobraniem i po pobraniu. Zarówno MD5 powinny być takie same.

Zakładając plik znajduje się na komputerze z systemem Linux - przed i po pobraniu:

  1. Logowanie do maszyny linux używając ssh bibliotekę
  2. uruchom polecenie: # md5sum ścieżka_do_pliku
  3. Store wyjście w zmiennej.
  4. Porównaj wartości zmiennej

nadzieję informacja ta była pomocna.

Powiązane problemy