More

    Upload file và download file với Robot Framework

    Setup môi trường:
    • Python 3
    • Robot Framwork
    • IntelliJ IDEA
    Upload file sử dụng Robot framwork

    Kịch bản

    • Upload ảnh sunset.jpg lên website https://the-internet.herokuapp.com/upload
    • Verify ảnh đã upload thành công

    Ý tưởng thực hiện

    • Lưu file ảnh sunset.jpg muốn upload ở trong phần resource của project
    • Sử dụng key word Choose File với id và đường dẫn đến file muốn upload
    • Kiểm tra xem file đã upload thành công chưa bằng cách tìm tên file vừa upload ở màn hình
    
    
    
    
    fb*** Settings ***
    Documentation  File Upload Download in Robot Framework
    Library  SeleniumLibrary
    Library   OperatingSystem
    Library  String
    
    Suite Teardown             Close Browser
    
    *** Test Cases ***
    Verify File Upload
        [Documentation]  This test case verifies that a user can successfully upload a file
        [Tags]  Regression
        Open Browser  https://the-internet.herokuapp.com/upload                executable_path=${CURDIR}/chromedriver    browser=chrome
        Wait Until Element Is Visible  id:file-submit  timeout=5
        Choose File  id:file-upload  /Users/mac/IdeaProjects/RobotFWTutorial/resource/Upload/sunset.jpg
        Click Element  id:file-submit
        Element Text Should Be  tag:h3  File Uploaded!  timeout=5
        Element Text Should Be  id:uploaded-files  sunset.jpg  timeout=5

    Giải thích các câu lệnh

    Verify File Upload -> Tên test case

    [Documentation] This test case verifies that a user can successfully upload a file

    -> Keyword [Documentation] giống như một dòng comment ở trong test case, chúng ta có thể viết tóm tắt nội dung test case để dễ hiểu hơn

    [Tags] Regression -> Tag của test case là regression, cần dùng tag để đánh dấu và phân loại các test case, việc này giúp bạn quản lý và run các test case dễ dàng hơn

    Open Browser https://the-internet.herokuapp.com/upload executable_path=${CURDIR}/chromedriver browser=chrome -> open browser upload với trình duyệt chrome

    Wait Until Element Is Visible id:file-submit timeout=5 -> câu lệnh wait đợi cho đến khi element upload hiển thị. Câu lệnh này giúp bạn tránh được những lỗi kịch bản về performance

    Choose File id:file-upload /Users/mac/IdeaProjects/RobotFWTutorial/resource/Upload/sunset.jpg -> dùng key word Choose File để upload vào nút upload có id:file-upload, đường dẫn ảnh là …/sunset.jpg

    Click Element id:file-submit -> sau khi đã chọn được ảnh upload, ấn vào nút submit upload

    Element Text Should Be tag:h3 File Uploaded! timeout=5
    Element Text Should Be id:uploaded-files sunset.jpg timeout=5

    -> 2 câu lệnh dùng để verify rằng file đã upload thành công bằng cách có hiển thị tên file ở màn hình

    Download file

    Kịch bản

    • Download file đã có sẵn ở link https://the-internet.herokuapp.com/download
    • Kiểm tra xem file đã download thành công ở máy

    Ý tưởng thực hiện

    • Tạo 1 thư mục để chứa file được download
    • Mở chrome với download option và click để download file
    • Khi đã download được file, để kiểm tra được file đã download thành công, có thể sử dụng keyword List Files In Directory để list tất cả các file trong thư mục vừa tạo. Thư mục nên có 1 file vừa tải về.
    • Sau khi kiểm tra đã có file được download, nên xoá file đó để đảm bảo cho những lần chạy regression test sau không bị lỗi
    *** Settings ***
    Documentation  File Upload Download in Robot Framework
    Library  SeleniumLibrary
    Library   OperatingSystem
    Library  String
    
    Suite Teardown             Close Browser
    
    *** Test Cases ***
    Verify File Download
        [Documentation]  This test case verifies that a user can successfully download a file
        [Tags]  Regression
    
        ${directory} =   Catenate    SEPARATOR=  /Users/mac/Downloads/Robot-Framework-master/Resources/Download/1
    
        ${chrome options}=  Evaluate  sys.modules['selenium.webdriver'].ChromeOptions()  sys, selenium.webdriver
        ${prefs}  Create Dictionary
        ...  download.default_directory=${directory}
        Call Method  ${chrome options}  add_experimental_option  prefs  ${prefs}
        Create Webdriver  Chrome  chrome_options=${chrome options}
        Goto  https://the-internet.herokuapp.com/download
        Click Link  css:[href="download/sunset.jpg"]
        Sleep  5s
        ${files}  List Files In Directory   ${directory}
        Length Should Be  ${files}  1
        Remove File         Resources/Download/1/sunset.jpg
    

    Giải thích các câu lệnh

    Verify File Download -> Tên của test case, nên viết hoa các chữ cái đầu


    [Documentation] This test case verifies that a user can successfully download a file ->

    -> Keyword [Documentation] giống như một dòng comment ở trong test case, chúng ta có thể viết tóm tắt nội dung test case để dễ hiểu hơn

    [Tags] Regression -> Tag của test case là regression, cần dùng tag để đánh dấu và phân loại các test case, việc này giúp bạn quản lý và run các test case dễ dàng hơn

    ${directory} = Catenate SEPARATOR= /Users/mac/Downloads/Robot-Framework-master/Resources/Download/1 ->Tạo biến directory chứa đường dẫn của thư mục muốn để ảnh khi download

    ${chrome options}= Evaluate sys.modules['selenium.webdriver'].ChromeOptions() sys, selenium.webdriver -> mở browser là chrome

    ${prefs} Create Dictionary
    … download.default_directory=${directory}
    -> câu lệnh chuyển thư mục donwload default là thư mục vừa tạo ở lệnh bên trên

    Call Method ${chrome options} add_experimental_option prefs ${prefs} -> call method của một với biến được cung cấp

    Create Webdriver Chrome chrome_options=${chrome options}
    Goto https://the-internet.herokuapp.com/download

    -> tạo một driver là chrome và mở link có file cần download

    Click Link css:[href="download/sunset.jpg"] -> ấn vào link cần download ở màn hình
    Sleep 5s -> dừng khoảng 5s để đảm bảo rằng file đã được download thành công

    ${files} List Files In Directory ${directory}. -> Mở thư mục vừa donwload ảnh về và lấy ra số lương file có trong thư mục

    Length Should Be ${files} 1 -> Vì thư mục vừa donwload và vừa tải 1 file về nên trong thư mục nên chỉ có 1 file thì chứng minh được rằng mình đã download thành công
    Remove File Resources/Download/1/sunset.jpg -> Để phục vụ cho việc chạy regession test sau, bạn nên thêm 1 lệnh là xoá file vừa down. Vì nếu lần sau tiếp tục download thêm vào thư mục, só lượng file của thư mục sẽ tăng không còn chính xác.

    Trong trường hợp này có thể có một số cách sau:

    1. Tạo thư mục với tên khác nhau trong mỗi lần chạy kịch bản, có thể thêm tiền tố ở sau tên của thư mục như timestamp hoặc là một chuỗi random -> để đảm bảo được mỗi lần chạy kịch bản sẽ luôn là một thư mục mới, các kết quả của kịch bản luôn được độc lập và chính xác.
    2. Xoá thư mục vừa tạo ở cuối kịch bản -> để clean data cho lần chạy tiếp theo.
    3. Xoá file sau khi download -> để clean data cho lần chạy tiếp theo.

    Mong rằng qua bài viết các bạn có thể thực hiện được kịch bản download và upload thành công!

    Tham khảo bài viết: HOW TO UPLOAD AND DOWNLOAD A FILE IN ROBOT FRAMEWORK

    Recent Articles

    Related Stories

    BÌNH LUẬN

    Vui lòng nhập bình luận của bạn
    Vui lòng nhập tên của bạn ở đây