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
-> 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
… download.default_directory=${directory}
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:
- 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.
- Xoá thư mục vừa tạo ở cuối kịch bản -> để clean data cho lần chạy tiếp theo.
- 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