diff --git a/source/src/main/java/org/cerberus/core/engine/entity/Identifier.java b/source/src/main/java/org/cerberus/core/engine/entity/Identifier.java index aa5bd79bb0..b44fead5b3 100644 --- a/source/src/main/java/org/cerberus/core/engine/entity/Identifier.java +++ b/source/src/main/java/org/cerberus/core/engine/entity/Identifier.java @@ -64,6 +64,7 @@ public interface Identifiers { public static final String IDENTIFIER_DATACERBERUS = "data-cerberus"; public static final String IDENTIFIER_TITLE = "title"; public static final String IDENTIFIER_REGEXTITLE = "regexTitle"; + public static final String IDENTIFIER_REGEXURL = "regexUrl"; public static final String IDENTIFIER_URL = "url"; public static final String IDENTIFIER_ERRATUM = "erratum"; public static final String IDENTIFIER_QUERYSELECTOR = "querySelector"; diff --git a/source/src/main/java/org/cerberus/core/engine/execution/impl/RobotServerService.java b/source/src/main/java/org/cerberus/core/engine/execution/impl/RobotServerService.java index 17d557cf18..cf8baab42f 100644 --- a/source/src/main/java/org/cerberus/core/engine/execution/impl/RobotServerService.java +++ b/source/src/main/java/org/cerberus/core/engine/execution/impl/RobotServerService.java @@ -804,6 +804,11 @@ private MutableCapabilities setCapabilityBrowser(MutableCapabilities capabilitie profile.setPreference("general.useragent.override", usedUserAgent); } + // Activate DRM + optionsFF.addPreference("media.eme.enabled",true); + optionsFF.addPreference("media.gmp-manager.updateEnabled", true); + + // Verbose level and Headless if (tCExecution.getVerbose() <= 0) { optionsFF.setHeadless(true); @@ -819,6 +824,7 @@ private MutableCapabilities setCapabilityBrowser(MutableCapabilities capabilitie } optionsFF.setProfile(profile); + // Accept Insecure Certificates. optionsFF.setAcceptInsecureCerts(tCExecution.getRobotObj() == null || tCExecution.getRobotObj().isAcceptInsecureCerts()); diff --git a/source/src/main/java/org/cerberus/core/service/webdriver/impl/WebDriverService.java b/source/src/main/java/org/cerberus/core/service/webdriver/impl/WebDriverService.java index 46896a49a0..0c553e6cdd 100644 --- a/source/src/main/java/org/cerberus/core/service/webdriver/impl/WebDriverService.java +++ b/source/src/main/java/org/cerberus/core/service/webdriver/impl/WebDriverService.java @@ -1026,23 +1026,31 @@ private boolean checkIfExpectedWindow(Session session, String identifier, String String title; switch (identifier) { - case Identifier.IDENTIFIER_URL: { - + case Identifier.IDENTIFIER_URL: wait.until(ExpectedConditions.not(ExpectedConditions.urlToBe("about:blank"))); - return session.getDriver().getCurrentUrl().equals(value); - } + result = session.getDriver().getCurrentUrl().equals(value); + break; + case Identifier.IDENTIFIER_REGEXURL: + wait.until(ExpectedConditions.not(ExpectedConditions.urlToBe("about:blank"))); + String currentUrl = session.getDriver().getCurrentUrl(); + Pattern patternUrl = Pattern.compile(value); + Matcher matcherUrl = patternUrl.matcher(currentUrl); + result = matcherUrl.find(); + break; case Identifier.IDENTIFIER_REGEXTITLE: wait.until(ExpectedConditions.not(ExpectedConditions.titleIs(""))); title = session.getDriver().getTitle(); Pattern pattern = Pattern.compile(value); Matcher matcher = pattern.matcher(title); result = matcher.find(); + break; default: wait.until(ExpectedConditions.not(ExpectedConditions.titleIs(""))); title = session.getDriver().getTitle(); if (title.equals(value)) { result = true; } + break; } return result; } diff --git a/source/src/main/java/org/cerberus/core/util/StringUtil.java b/source/src/main/java/org/cerberus/core/util/StringUtil.java index d72044ba4d..453cf9c0bd 100644 --- a/source/src/main/java/org/cerberus/core/util/StringUtil.java +++ b/source/src/main/java/org/cerberus/core/util/StringUtil.java @@ -313,7 +313,7 @@ public static String encodeAsJavaScriptURIComponent(String stringToEncode) { */ public static String cleanHostURL(String host) { String newHost = host; - if (!(host.startsWith(HTTP_PREFIX) || host.startsWith(HTTPS_PREFIX) || host.startsWith(FTP_PREFIX) || host.startsWith(FTPS_PREFIX))) { + if (!(host.startsWith(HTTP_PREFIX) || host.startsWith(HTTPS_PREFIX) || host.startsWith(FTP_PREFIX) || host.startsWith(FTPS_PREFIX) || host.startsWith(FILE_PREFIX))) { // No prefix so we put http:// by default. newHost = HTTP_PREFIX + host; } @@ -330,7 +330,7 @@ public static String cleanHostURL(String host) { * @return formatted host */ public static String removeProtocolFromHostURL(String host) { - String newHost = host.replace(HTTP_PREFIX, "").replace(HTTPS_PREFIX, "").replace(FTP_PREFIX, "").replace(FTPS_PREFIX, ""); + String newHost = host.replace(HTTP_PREFIX, "").replace(HTTPS_PREFIX, "").replace(FTP_PREFIX, "").replace(FTPS_PREFIX, "").replace(FILE_PREFIX, ""); LOG.debug("Removed protocol host from {} to {}", host, newHost); return newHost; diff --git a/source/src/main/webapp/js/testcase/action.js b/source/src/main/webapp/js/testcase/action.js index b31bafb8df..c2639e4d11 100644 --- a/source/src/main/webapp/js/testcase/action.js +++ b/source/src/main/webapp/js/testcase/action.js @@ -58,7 +58,7 @@ var actionOptList = { "field1":{"label":{"en": "Element path of the target iFrame", "fr": "Chemin vers l'élement de l'iFrame à cibler"},"picto":"images/action-html.png", "class": "col-lg-12 crb-autocomplete-variable"}}, "focusDefaultIframe":{"group":"context_action","value": "focusDefaultIframe","label":{"en":"Focus to main context","fr":"Switcher sur le context principal"},"application_types":["GUI"]}, "switchToWindow":{"group":"context_action","value": "switchToWindow","label":{"en":"Switch to Window","fr":"Switcher sur l'onglet"},"application_types":["GUI"], - "field1":{"label":{"en": "Window title or url", "fr": "Titre ou url de la fenêtre"},"picto":"images/action-website.png", "class": "col-lg-12 crb-autocomplete-variable"}}, + "field1":{"label":{"en": "Window title or url (incl. regexTitle and regexUrl)", "fr": "Titre ou url de la fenêtre (incl. regexTitle and regexUrl)"},"picto":"images/action-website.png", "class": "col-lg-12 crb-autocomplete-variable"}}, "manageDialog":{"group":"context_action","value": "manageDialog","label":{"en":"Manage Dialog","fr":"Gérer la popup"},"application_types":["GUI"], "field1":{"label":{"en": "ok or cancel", "fr": "ok ou cancel"},"picto":"images/action-font.png", "class": "col-lg-12 crb-autocomplete-variable"}}, "manageDialogKeypress":{"group":"context_action","value": "manageDialogKeypress","label":{"en":"Manage Dialog pressing key","fr":"Switcher sur l'Iframe"},"application_types":["GUI"],