1. 程式人生 > >katalon系列十二:自動化上傳檔案、下載檔案

katalon系列十二:自動化上傳檔案、下載檔案

一、下載檔案
1.下載檔案時,需要先設定好Chrome/Firefox下載路徑、不彈出下載框等,大家先學習下在selenium下如何設定:
https://www.cnblogs.com/fnng/p/7700620.html

在Katalon中設定Chrome的DesiredCapabilities如圖:


點選選單Edit-Desired Capabilities-Web UI-Chrome,點選Add,名稱輸入prefs,型別選Dictionary,Value如下:
profile.default_content_settings.popups Number 0
download.default_directory String E:\path

 

在Katalon中設定Firefox的DesiredCapabilities(具體設定名稱和值可以在上面的連結中複製):

參考https://forum.katalon.com/t/download-files-from-web-ui-not-working/8845

 

2.在Katalon指令碼中點選下載的元素,檔案就自動下載了。

3.編寫自定義關鍵字驗證檔案是否下載成功
右擊左側目錄選單中的Keywords--New--Package,輸入包名myKeywords
右擊新建的包--New--Keyword,輸入類名myKeywords,輸入以下程式碼

原始碼https://github.com/katalon-studio-samples/katalon-web-automation/tree/master/Scripts/How%20to%20Handle%20File%20Uploads/Verify%20File%20Downloaded


在指令碼中呼叫(檔案地址我用的全域性變數,你也可以直接寫成'C:\\Users\\Pictures\\')
Assert.assertTrue(CustomKeywords.'myKeywords.Utils.isFileExist'(GlobalVariable.G_FilePath, 'file.xlsx'), 'Failed to download Expected document')


視覺化介面呼叫

參考https://docs.katalon.com/katalon-studio/tutorials/handle_file_uploads.html#verify-a-downloaded-file



 


二、上傳檔案
在Katalon指令碼中用Upload File或Send Keys均可上傳檔案
WebUI.sendKeys(findTestObject('input__wd'), 'C:\\Users\\Pictures\\Desert.jpg')
WebUI.uploadFile(findTestObject('Page_Project/Page_ImportData/button_UploadData'), GlobalVariable.G_FilePath + 'file.xlsx')

使用Upload File或Send Keys的提前是元素tag是input,type是file,你直接在頁面上可能看不到input,定位到下載button,往下幾行可以找到input

如果你們的不是input,可以通過模擬鍵盤上傳,同樣這裡寫一個自定義關鍵字
import java.awt.Robot
import java.awt.Toolkit
import java.awt.datatransfer.StringSelection
import java.awt.event.KeyEvent
import com.kms.katalon.core.testobject.TestObject
import com.kms.katalon.core.webui.keyword.WebUiBuiltInKeywords as WebUI

def uploadFile(TestObject to, String filePath) {

WebUI.click(to)

StringSelection ss = new StringSelection(filePath);
Toolkit.getDefaultToolkit().getSystemClipboard().setContents(ss, null);

Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_ENTER);
robot.keyRelease(KeyEvent.VK_ENTER);
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_ENTER);
robot.keyRelease(KeyEvent.VK_ENTER);
}

參考https://forum.katalon.com/t/how-to-upload-a-file-from-windows-explorer/6011/8