Skip to content

Commit

Permalink
Merge origin/master
Browse files Browse the repository at this point in the history
  • Loading branch information
vertigo17 committed Apr 3, 2024
2 parents 94bd826 + d1f5107 commit dd32113
Show file tree
Hide file tree
Showing 4 changed files with 29 additions and 18 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -787,10 +787,10 @@ private MessageEvent doActionScrollTo(TestCaseExecution tCExecution, String elem
}

if (tCExecution.getApplicationObj().getType().equalsIgnoreCase(Application.TYPE_APK)) {
return androidAppiumService.scrollTo(tCExecution.getSession(), identifier, text);
return androidAppiumService.scrollTo(tCExecution, identifier, text);

} else if (tCExecution.getApplicationObj().getType().equalsIgnoreCase(Application.TYPE_IPA)) {
return iosAppiumService.scrollTo(tCExecution.getSession(), identifier, text);
return iosAppiumService.scrollTo(tCExecution, identifier, text);

} else if (tCExecution.getApplicationObj().getType().equalsIgnoreCase(Application.TYPE_GUI)) {
return webdriverService.scrollTo(tCExecution.getSession(), identifier, text);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -224,6 +224,7 @@ public enum MessageEventEnum {
ACTION_SUCCESS_EXECUTESQLSTOREDPROCEDURE(200, "OK", "SQL '%SQL%' Executed against %JDBC% - %NBROWS% row(s) affected.", false, false, false, MessageGeneralEnum.EXECUTION_PE_TESTSTARTED),
ACTION_SUCCESS_EXECUTEJS(200, "OK", "Javascript executed successfully and returned Value '%VALUE%'.", false, false, false, MessageGeneralEnum.EXECUTION_PE_TESTSTARTED),
ACTION_SUCCESS_SCROLLTO(200, "OK", "Scroll to '%VALUE%' successful.", false, false, false, MessageGeneralEnum.EXECUTION_PE_TESTSTARTED),
ACTION_SUCCESS_SCROLLTOELEMENT(200, "OK", "Successfully scrolled '%N%' times from '%FROM%px' to '%TO%px' until element '%ELEMENT%' found.", false, false, false, MessageGeneralEnum.EXECUTION_PE_TESTSTARTED),
ACTION_SUCCESS_INSTALLAPP(200, "OK", "Install application with success", false, false, false, MessageGeneralEnum.EXECUTION_PE_TESTSTARTED),
ACTION_SUCCESS_REMOVEAPP(200, "OK", "Remove applcation with success", false, false, false, MessageGeneralEnum.EXECUTION_PE_TESTSTARTED),
ACTION_SUCCESS_DRAGANDDROP(200, "OK", "Drag and drop from %SOURCE% to %TARGET% with success", false, false, false, MessageGeneralEnum.EXECUTION_PE_TESTSTARTED),
Expand Down Expand Up @@ -277,6 +278,7 @@ public enum MessageEventEnum {
ACTION_FAILED_SELECT(266, "FA", "Element and Option are both mandatory in order to perform the action.", true, true, true, MessageGeneralEnum.EXECUTION_FA_ACTION),
ACTION_FAILED_CLICK_NO_SUCH_ELEMENT(267, "FA", "Failed to click because could not find element '%ELEMENT%'!", true, true, true, MessageGeneralEnum.EXECUTION_FA_ACTION),
ACTION_FAILED_SCROLL_NO_SUCH_ELEMENT(267, "FA", "Failed to scroll because could not find element '%ELEMENT%'!", true, true, true, MessageGeneralEnum.EXECUTION_FA_ACTION),
ACTION_FAILED_SCROLL_ELEMENT_NOT_FOUND(267, "FA", "Successfully scrolled '%N%' times from '%FROM%px' to '%TO%px' but could not find element '%ELEMENT%'!", true, true, true, MessageGeneralEnum.EXECUTION_FA_ACTION),
ACTION_FAILED_SCROLL_INVALID_PARAMETER(267, "FA", "Invalid parameter. Verify parameters cerberus_appium_scroll_endTopScreenPercentageScreenHeight and cerberus_appium_scroll_startBottomPercentageScreenHeight have float value between 0 and 1", true, true, true, MessageGeneralEnum.EXECUTION_FA_ACTION),
ACTION_FAILED_LONG_CLICK_NO_SUCH_ELEMENT(267, "FA", "Failed to long clicked because could not find element '%ELEMENT%'!", true, true, true, MessageGeneralEnum.EXECUTION_FA_ACTION),
ACTION_FAILED_DOUBLECLICK_NO_SUCH_ELEMENT(268, "FA", "Failed to double click because could not find element '%ELEMENT%'!", true, true, true, MessageGeneralEnum.EXECUTION_FA_ACTION),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
*/
package org.cerberus.core.service.appium;

import org.cerberus.core.crud.entity.TestCaseExecution;
import org.cerberus.core.engine.entity.Identifier;
import org.cerberus.core.engine.entity.MessageEvent;
import org.cerberus.core.engine.entity.Session;
Expand Down Expand Up @@ -112,7 +113,7 @@ public interface IAppiumService {
* @return
* @throws IllegalArgumentException
*/
MessageEvent scrollTo(Session session, Identifier element, String text) throws IllegalArgumentException;
MessageEvent scrollTo(TestCaseExecution tCExecution, Identifier element, String text) throws IllegalArgumentException;

/**
* install an application on mobile devices
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
import io.appium.java_client.touch.offset.PointOption;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.cerberus.core.crud.entity.TestCaseExecution;
import org.cerberus.core.crud.service.impl.ParameterService;
import org.cerberus.core.engine.entity.Identifier;
import org.cerberus.core.engine.entity.MessageEvent;
Expand Down Expand Up @@ -363,11 +364,10 @@ public Direction getDirectionForSwipe(Session session, SwipeAction action) throw
}

@Override
public MessageEvent scrollTo(Session session, Identifier element, String numberScrollDownMax) throws IllegalArgumentException {
AppiumDriver driver = session.getAppiumDriver();
public MessageEvent scrollTo(TestCaseExecution tCExecution, Identifier element, String numberScrollDownMax) throws IllegalArgumentException {
AppiumDriver driver = tCExecution.getSession().getAppiumDriver();
MessageEvent message;
try {
message = new MessageEvent(MessageEventEnum.ACTION_SUCCESS_SCROLLTO);

int numberOfScrollDown = 8;
try {
Expand All @@ -378,14 +378,11 @@ public MessageEvent scrollTo(Session session, Identifier element, String numberS

// check text
if (element.getIdentifier().equals("text")) {
scrollDown(driver, By.xpath("//*[contains(@text,'" + element.getLocator() + "')]"), numberOfScrollDown);
return scrollDown(driver, By.xpath("//*[contains(@text,'" + element.getLocator() + "')]"), numberOfScrollDown, tCExecution.getSystem());
} else {
scrollDown(driver, this.getBy(element), numberOfScrollDown);
return scrollDown(driver, this.getBy(element), numberOfScrollDown, tCExecution.getSystem());
}

message.setDescription(message.getDescription().replace("%VALUE%", element.toString()));

return message;
} catch (CerberusEventException e) {
LOG.error("An error occured during scroll to (element:" + element + ",numberScrollDownMax:" + numberScrollDownMax + ")", e);
return e.getMessageError();
Expand All @@ -404,19 +401,21 @@ public MessageEvent scrollTo(Session session, Identifier element, String numberS
* @param element
* @return
*/
private boolean scrollDown(AppiumDriver driver, By element, int numberOfScrollDown) throws CerberusEventException{
private MessageEvent scrollDown(AppiumDriver driver, By element, int numberOfScrollDown, String system) throws CerberusEventException{

MessageEvent message = new MessageEvent(MessageEventEnum.ACTION_SUCCESS_SCROLLTOELEMENT);

Dimension screenSize = driver.manage().window().getSize();

float screenTopPercentage = parameters.getParameterFloatByKey("cerberus_appium_scroll_endTopScreenPercentageScreenHeight", null, 0.125f);
float screenBottomPercentage = parameters.getParameterFloatByKey("cerberus_appium_scroll_startBottomPercentageScreenHeight", null, 0.8f);
float screenTopPercentage = parameters.getParameterFloatByKey("cerberus_appium_scroll_endTopScreenPercentageScreenHeight", system, 0.125f);
float screenBottomPercentage = parameters.getParameterFloatByKey("cerberus_appium_scroll_startBottomPercentageScreenHeight", system, 0.8f);

/**
* Check if cerberus_appium_scroll_endTopScreenPercentageScreenHeight and cerberus_appium_scroll_startBottomPercentageScreenHeight parameters are float between 0 and 1
*/
if (screenTopPercentage < 0 || screenTopPercentage > 1 || screenBottomPercentage < 0 || screenBottomPercentage > 1){
MessageEvent me =new MessageEvent(MessageEventEnum.ACTION_FAILED_SCROLL_INVALID_PARAMETER);
throw new CerberusEventException(me);
message = new MessageEvent(MessageEventEnum.ACTION_FAILED_SCROLL_INVALID_PARAMETER);
throw new CerberusEventException(message);
}

int pressX = driver.manage().window().getSize().width / 2;
Expand All @@ -429,14 +428,23 @@ private boolean scrollDown(AppiumDriver driver, By element, int numberOfScrollDo
do {
boolean isPresent = driver.findElements(element).size() > 0;
if (isPresent && driver.findElement(element).isDisplayed()) {
return true;
message.setDescription(message.getDescription().replace("%N%", String.valueOf(i)));
message.setDescription(message.getDescription().replace("%FROM%", String.valueOf(bottomY)));
message.setDescription(message.getDescription().replace("%TO%", String.valueOf(topY)));
message.setDescription(message.getDescription().replace("%VALUE%", element.toString()));
return message;
} else {
scroll(driver, pressX, bottomY, pressX, topY);
}
i++;
} while (i < numberOfScrollDown);

return false;
message = new MessageEvent(MessageEventEnum.ACTION_FAILED_SCROLL_ELEMENT_NOT_FOUND);
message.setDescription(message.getDescription().replace("%N%", String.valueOf(i)));
message.setDescription(message.getDescription().replace("%FROM%", String.valueOf(bottomY)));
message.setDescription(message.getDescription().replace("%TO%", String.valueOf(topY)));
message.setDescription(message.getDescription().replace("%ELEMENT%", element.toString()));
return message;
}

private void scroll(AppiumDriver driver, int fromX, int fromY, int toX, int toY) {
Expand Down

0 comments on commit dd32113

Please sign in to comment.