一、下載文件
(1)下載文件時,需要先設置好Chrome/Firefox下載路徑、不彈出下載框等,大家先學習下在selenium下如何設置:
https://www.cnblogs.com/fnng/p/7700620.html
1.1在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
1.2在代碼中設置Chrome的DesiredCapabilities(推薦)
import com.kms.katalon.core.webui.driver.DriverFactory import org.openqa.selenium.WebDriver import org.openqa.selenium.chrome.ChromeDriver import org.openqa.selenium.chrome.ChromeOptions HashMap<String, Object> chromePrefs = new HashMap<String, Object>() chromePrefs.put("profile.default_content_settings.popups", 0) //下載彈窗,關閉 chromePrefs.put("download.default_directory", "D:\\szh\\katalon\\research\\ui_auto_file") //下載目錄 ChromeOptions options = new ChromeOptions() options.addArguments("--start-maximized") //最大化窗口 options.setExperimentalOption("prefs",chromePrefs) System.setProperty("webdriver.chrome.driver", DriverFactory.getChromeDriverPath()) WebDriver driver = new ChromeDriver(options) DriverFactory.changeWebDriver(driver) WebUI.navigateToUrl('https://www.baidu.com/')
2.在Katalon中設置Firefox的DesiredCapabilities(具體設置名稱和值可以在上面的鏈接中復制):
參考https://forum.katalon.com/t/download-files-from-web-ui-not-working/8845
(2).在Katalon腳本中點擊下載的元素,文件就自動下載了。
(3).編寫自定義關鍵字驗證文件是否下載成功
3.1
右擊左側目錄菜單中的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
3.2
在腳本中調用(文件地址我用的全局變量,你也可以直接寫成'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
---------------------------------------------------------------------------------
關注微信公眾號即可在手機上查閱,並可接收更多測試分享~