我正在尝试创建一个非常简单的Katalon测试用例,以打开Firefox,转到给定的URL,然后单击按钮下载文件。我已经根据Katalon文档(https://github.com/katalon-studio/docs/blob/master/pages/katalon-studio/docs/introduction-to-desired-capabilities.md)设置了所需功能,但是没有运气。当我尝试下载文件时,出现提示,并且未下载文件。如何禁用提示并立即下载文件?
下面的软件版本,源代码和屏幕截图。
Windows 10,Katalon Studio 7.2.1,Mozilla Firefox 72.0.2,Selenium 3.141.59
import static com.kms.katalon.core.checkpoint.CheckpointFactory.findCheckpoint
import static com.kms.katalon.core.testcase.TestCaseFactory.findTestCase
import static com.kms.katalon.core.testdata.TestDataFactory.findTestData
import static com.kms.katalon.core.testobject.ObjectRepository.findTestObject
import static com.kms.katalon.core.testobject.ObjectRepository.findWindowsObject
import com.kms.katalon.core.checkpoint.Checkpoint as Checkpoint
import com.kms.katalon.core.cucumber.keyword.CucumberBuiltinKeywords as CucumberKW
import com.kms.katalon.core.mobile.keyword.MobileBuiltInKeywords as Mobile
import com.kms.katalon.core.model.FailureHandling as FailureHandling
import com.kms.katalon.core.testcase.TestCase as TestCase
import com.kms.katalon.core.testdata.TestData as TestData
import com.kms.katalon.core.testobject.TestObject as TestObject
import com.kms.katalon.core.webservice.keyword.WSBuiltInKeywords as WS
import com.kms.katalon.core.webui.keyword.WebUiBuiltInKeywords as WebUI
import com.kms.katalon.core.windows.keyword.WindowsBuiltinKeywords as Windows
import internal.GlobalVariable as GlobalVariable
import org.openqa.selenium.Keys as Keys
WebUI.openBrowser('https://file-examples.com/index.php/text-files-and-archives-download/')
WebUI.click(findTestObject('downloadCsvFileButton'))
对于Chrome,“项目设置”中的“所需功能”的默认设置可以正常工作,但是对于Firefox,我必须采取一些变通方法以使其正常工作。
因此,我发现了这个主题https://forum.katalon.com/t/opening-firefox-with-a-specific-non-anonymous-profile/12012/15,@ kazurayam的回复帮助我创建了一个脚本,该脚本初始化了在每个测试用例之前调用的WebDriver:
import org.openqa.selenium.WebDriver import org.openqa.selenium.firefox.FirefoxDriver import org.openqa.selenium.firefox.FirefoxOptions import org.openqa.selenium.firefox.FirefoxProfile import org.openqa.selenium.firefox.ProfilesIni import static com.kms.katalon.core.testobject.ObjectRepository.findTestObject import com.kms.katalon.core.webui.driver.DriverFactory import com.kms.katalon.core.webui.driver.WebUIDriverType import com.kms.katalon.core.webui.keyword.WebUiBuiltInKeywords as WebUI import internal.GlobalVariable as GlobalVariable WebUIDriverType executedBrowser = DriverFactory.getExecutedBrowser() switch(executedBrowser) { case WebUIDriverType.FIREFOX_DRIVER: // "Firefox" System.setProperty('webdriver.gecko.driver', DriverFactory.getGeckoDriverPath()) FirefoxOptions options = new FirefoxOptions() options.addPreference('marionette', true) options.addPreference('browser.download.folderList', 2) options.addPreference('browser.helperApps.alwaysAsk.force', false) options.addPreference('browser.download.manager.showWhenStarting', false) options.addPreference('browser.download.dir', GlobalVariable.downloadPath) options.addPreference('browser.download.downloadDir', GlobalVariable.downloadPath) options.addPreference('browser.download.defaultFolder', GlobalVariable.downloadPath) options.addPreference('browser.helperApps.neverAsk.saveToDisk', 'application/download, application/octet-stream, text/csv') WebDriver driver = new FirefoxDriver(options); // let Katalon Studio to use the WebDriver created here DriverFactory.changeWebDriver(driver) break default: WebUI.openBrowser('') }
[其他人,如果要下载其他文件类型,则必须在'browser.helperApps.neverAsk.saveToDisk'首选项中指定所有必需的MIME类型。 MIME类型的列表可以在这里找到:https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Complete_list_of_MIME_types
此外,如果文件是PDF,则必须再添加一个首选项:
options.addPreference('pdfjs.disabled', true)