diff --git a/source/src/main/java/org/cerberus/core/engine/entity/Session.java b/source/src/main/java/org/cerberus/core/engine/entity/Session.java index 6823d3f21..fad7795f6 100644 --- a/source/src/main/java/org/cerberus/core/engine/entity/Session.java +++ b/source/src/main/java/org/cerberus/core/engine/entity/Session.java @@ -47,9 +47,12 @@ public class Session { private WebDriver driver; private AppiumDriver appiumDriver; - private Integer cerberus_selenium_pageLoadTimeout; private Integer cerberus_selenium_implicitlyWait; + + private Integer cerberus_selenium_pageLoadTimeout; + private Integer cerberus_selenium_pageLoadTimeout_default; // Default value private Integer cerberus_selenium_setScriptTimeout; + private Integer cerberus_selenium_setScriptTimeout_default; // Default value private Integer cerberus_selenium_wait_element; // Current Value. This one is the one used by the engine. private Integer cerberus_selenium_wait_element_default; // Default value @@ -231,6 +234,22 @@ public void setCerberus_sikuli_wait_element(Integer cerberus_sikuli_wait_element this.cerberus_sikuli_wait_element = cerberus_sikuli_wait_element; } + public Integer getCerberus_selenium_pageLoadTimeout_default() { + return cerberus_selenium_pageLoadTimeout_default; + } + + public void setCerberus_selenium_pageLoadTimeout_default(Integer cerberus_selenium_pageLoadTimeout_default) { + this.cerberus_selenium_pageLoadTimeout_default = cerberus_selenium_pageLoadTimeout_default; + } + + public Integer getCerberus_selenium_setScriptTimeout_default() { + return cerberus_selenium_setScriptTimeout_default; + } + + public void setCerberus_selenium_setScriptTimeout_default(Integer cerberus_selenium_setScriptTimeout_default) { + this.cerberus_selenium_setScriptTimeout_default = cerberus_selenium_setScriptTimeout_default; + } + public Integer getCerberus_selenium_wait_element_default() { return cerberus_selenium_wait_element_default; } 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 4f5e58c02..36f2421d0 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 @@ -191,8 +191,12 @@ public void startServer(TestCaseExecution execution) throws CerberusException { Session session = new Session(); session.setCerberus_selenium_implicitlyWait(cerberus_selenium_implicitlyWait); + session.setCerberus_selenium_pageLoadTimeout(cerberus_selenium_pageLoadTimeout); + session.setCerberus_selenium_pageLoadTimeout_default(cerberus_selenium_pageLoadTimeout); + session.setCerberus_selenium_setScriptTimeout(cerberus_selenium_setScriptTimeout); + session.setCerberus_selenium_setScriptTimeout_default(cerberus_selenium_setScriptTimeout); // _wait_element parameters session.setCerberus_selenium_wait_element(cerberus_selenium_wait_element); @@ -464,7 +468,7 @@ public Request authenticate(Route route, Response response) throws IOException { // unlock device if deviceLockUnlock is active if (execution.getRobotExecutorObj() != null && appiumDriver instanceof LocksDevice - && "Y".equals(execution.getRobotExecutorObj().isDeviceLockUnlock())) { + && execution.getRobotExecutorObj().isDeviceLockUnlock()) { ((LocksDevice) appiumDriver).unlockDevice(); } @@ -1282,6 +1286,18 @@ public void setOptionsTimeout(Session session, Integer timeout) { session.setCerberus_selenium_wait_element(timeout); session.setCerberus_sikuli_wait_element(timeout); + LOG.debug(session.getDriver()); + LOG.debug(session.getCerberus_selenium_pageLoadTimeout()); + LOG.debug(timeout); + if ((session.getDriver() != null) && (session.getCerberus_selenium_pageLoadTimeout() != timeout)) { + LOG.debug("Setting Selenium Robot Options (pageLoadTimeout & setScriptTimeout) timeout to : {}", timeout); + WebDriver driver = session.getDriver(); + driver.manage().timeouts().pageLoadTimeout(timeout, TimeUnit.MILLISECONDS); + driver.manage().timeouts().setScriptTimeout(timeout, TimeUnit.MILLISECONDS); + session.setCerberus_selenium_pageLoadTimeout(timeout); + session.setCerberus_selenium_setScriptTimeout(timeout); + } + if ((session.getAppiumDriver() != null) && (session.getCerberus_appium_wait_element() != timeout)) { LOG.debug("Setting Appium Robot Options timeout to : {}", timeout); AppiumDriver appiumDriver = session.getAppiumDriver(); @@ -1326,6 +1342,18 @@ public void setOptionsToDefault(Session session) { session.getCerberus_sikuli_wait_element_default()); session.setCerberus_selenium_wait_element(session.getCerberus_selenium_wait_element_default()); session.setCerberus_sikuli_wait_element(session.getCerberus_sikuli_wait_element_default()); + + WebDriver driver = session.getDriver(); + if ((driver != null) && (session.getCerberus_selenium_pageLoadTimeout() != session.getCerberus_selenium_pageLoadTimeout_default())) { + LOG.debug("Setting Selenium Robot Options (pageLoadTimeout) timeout to : {}", session.getCerberus_selenium_pageLoadTimeout_default()); + driver.manage().timeouts().pageLoadTimeout(session.getCerberus_selenium_pageLoadTimeout_default(), TimeUnit.MILLISECONDS); + session.setCerberus_selenium_pageLoadTimeout(session.getCerberus_selenium_pageLoadTimeout_default()); + } + if ((driver != null) && (session.getCerberus_selenium_setScriptTimeout() != session.getCerberus_selenium_setScriptTimeout_default())) { + LOG.debug("Setting Selenium Robot Options (setScriptTimeout) timeout to : {}", session.getCerberus_selenium_setScriptTimeout_default()); + driver.manage().timeouts().setScriptTimeout(session.getCerberus_selenium_setScriptTimeout_default(), TimeUnit.MILLISECONDS); + session.setCerberus_selenium_setScriptTimeout(session.getCerberus_selenium_setScriptTimeout_default()); + } LOG.debug("Setting Robot highlightElement back to default values : Selenium {} Sikuli {}", session.getCerberus_selenium_highlightElement_default(), session.getCerberus_sikuli_highlightElement_default()); 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 fd583e66c..fccb47fab 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 @@ -1544,7 +1544,11 @@ public MessageEvent doSeleniumActionDragAndDrop(Session session, Identifier drag return message; } else { message = new MessageEvent(MessageEventEnum.ACTION_FAILED_DRAGANDDROP_NO_SUCH_ELEMENT); - message.setDescription(message.getDescription().replace("%ELEMENT%", drag.getIdentifier() + "=" + drag.getLocator())); + if (answerDrag.isCodeEquals(MessageEventEnum.ACTION_SUCCESS_WAIT_ELEMENT.getCode())) { + message.setDescription(message.getDescription().replace("%ELEMENT%", drop.getIdentifier() + "=" + drop.getLocator())); + } else { + message.setDescription(message.getDescription().replace("%ELEMENT%", drag.getIdentifier() + "=" + drag.getLocator())); + } return message; } } catch (NoSuchElementException exception) { diff --git a/source/src/main/resources/documentation/D2/include/en/changelog_4.19_en.adoc b/source/src/main/resources/documentation/D2/include/en/changelog_4.19_en.adoc index 2aca0298a..74c84f523 100644 --- a/source/src/main/resources/documentation/D2/include/en/changelog_4.19_en.adoc +++ b/source/src/main/resources/documentation/D2/include/en/changelog_4.19_en.adoc @@ -12,6 +12,8 @@ * [ENGINE] When callService that is attached to an application, host and contextroot of the corresponding application is used (if country env of the application does not exist on the test case application, search is also made on linked environments). * [ENGINE] New variable for system.dates. You can now for example do %system.DAY-13-d% that will return the day of month (d) of 13 days ago (DAY-13). (locale of country invariant is used) * [ENGINE] test case dependency engine now alow to define a delay between the end of an execution and the start of the next one. That allow to execute a campaign with some testcases on day 1 and release the rest of the testcases on day 2 (after some end of day treatments has been executed) +* [ENGINE] Drag and drop now report error on Drop element and not drag when necessary. +* [ENGINE] Timeout overwrite option now also overwrite pageLoadTimeout and setScriptTimeout. * [GUI] Added service call simulation feature. When editing a service, you can make calls outside a testcase context in order to control and tune the definition of the call. * [GUI] Improved autocompletion adding boolean, flags and contextual element for select and switchWindow actions. * [GUI] Improved navigation on campaign execution screen. Adding CTA on top of the screen and toggle buttons for reporting details hidden by default.