Is it possible to add relative path in Desired Capabilities?
Hi @discover.selenium.
No, it’s not possible to put there a relative path. I noticed this shortcoming when I was trying the same for my use case: A custom download path.
A workaround I found is using Test Listeners somewhere on this community is to set desired capabilities during run-time just before the browser is actually opened.
An example of my code that you should be able to adjust to your needs below (I trimmed it a bit down as it’s contains more, but isn’t valuable for your specific question). Nutshell: I have a global variable (profile) value called “downloadPath” which leads to a folder within my project repo. So it will run locally and in any build pipeline. These settings below are for chrome.
Hope this helps!
Regards,
Joost
import com.kms.katalon.core.annotation.BeforeTestCase
import com.kms.katalon.core.configuration.RunConfiguration
import com.kms.katalon.core.util.KeywordUtil
import java.nio.file.Path
import java.nio.file.Paths
import java.nio.file.Files
import java.io.File
import internal.GlobalVariable
class BeforeTc3SetSpecificDownloadDirectoryIfNeeded {
/**
* Executes before every test case starts.
*/
@BeforeTestCase
def setSpecificDownloadDirectoryIfNeeded() {
Map desiredCapabilities = RunConfiguration.getDriverPreferencesProperties("WebUI")
String projectDir = RunConfiguration.getProjectDir()
Path projectPath = Paths.get(projectDir)
Path downloadPath = projectPath.resolve(GlobalVariable.downloadPath)
// you do not need / and \ here, which works on OS Windows & Linux!
def customizedDownloadDirectory = downloadPath.toString()
//CHROME: http://forum.katalon.com/t/is-this-possible-to-use-katalon-to-download-a-file/46318/4
Map prefs = desiredCapabilities.get("prefs")
if (prefs == null) {
prefs = [:]
}
KeywordUtil.logInfo("BeforeTc3SetSpecificDownloadDirectoryIfNeeded: We detected test name contains \"download\" so we get current desiredCapabilities prefs =" + prefs.toString())
KeywordUtil.logInfo("BeforeTc3SetSpecificDownloadDirectoryIfNeeded: ...and set desiredCapabilities to work with a customized download directory = RunConfiguration.getProjectDir() + / + GlobalVariable.downloadPath = : $customizedDownloadDirectory")
prefs.put("download.default_directory", customizedDownloadDirectory)
prefs.put("download_dir", customizedDownloadDirectory)
prefs.put("download.directory_upgrade", true)
prefs.put("download.prompt_for_download", false)
prefs.put("plugins.always_open_pdf_externally", true)
prefs.put("profile.default_content_settings.popups", "0")
prefs.put("profile.content_settings.exceptions.automatic_downloads.*.setting", "1")
RunConfiguration.setWebDriverPreferencesProperty("prefs", prefs)
RunConfiguration.setWebDriverPreferencesProperty("args", ["--no-sandbox", "--disable-dev-shm-usage"])
RunConfiguration.setWebDriverPreferencesProperty("useAutomationExtension", "false")
2 Likes