Skip to content

Commit

Permalink
Add offset on all mouse action.
Browse files Browse the repository at this point in the history
Add number of element retreived for actions type and click (will be extended to all elements)
  • Loading branch information
bcivel committed Oct 23, 2024
1 parent a90f825 commit 8eb165f
Show file tree
Hide file tree
Showing 8 changed files with 135 additions and 122 deletions.

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -182,18 +182,18 @@ public enum MessageEventEnum {
ACTION_SUCCESS_UNLOCKDEVICE_GENERIC(200, "OK", "Device unlocked.", false, false, false, MessageGeneralEnum.EXECUTION_PE_TESTSTARTED),
ACTION_SUCCESS_LOCKDEVICE_GENERIC(200, "OK", "Device locked.", false, false, false, MessageGeneralEnum.EXECUTION_PE_TESTSTARTED),
ACTION_SUCCESS_ROTATEDEVICE_GENERIC(200, "OK", "Device rotated.", false, false, false, MessageGeneralEnum.EXECUTION_PE_TESTSTARTED),
ACTION_SUCCESS_CLICK(200, "OK", "Element '%ELEMENT%' clicked.", false, false, false, MessageGeneralEnum.EXECUTION_PE_TESTSTARTED),
ACTION_SUCCESS_CLICK(200, "OK", "%ELEMENTFOUND%. Element '%ELEMENT%' clicked.", false, false, false, MessageGeneralEnum.EXECUTION_PE_TESTSTARTED),
ACTION_SUCCESS_CLICKANDWAIT(200, "OK", "Element '%ELEMENT%' clicked and waited %TIME% ms.", false, false, false, MessageGeneralEnum.EXECUTION_PE_TESTSTARTED),
ACTION_SUCCESS_CLICKANDNOWAIT(200, "OK", "Element '%ELEMENT%' clicked and waited for page to load", false, false, false, MessageGeneralEnum.EXECUTION_PE_TESTSTARTED),
ACTION_SUCCESS_TYPE(200, "OK", "Element '%ELEMENT%' feeded with '%DATA%'.", false, false, false, MessageGeneralEnum.EXECUTION_PE_TESTSTARTED),
ACTION_SUCCESS_TYPE(200, "OK", "%ELEMENTFOUND%. Element '%ELEMENT%' feeded with '%DATA%'.", false, false, false, MessageGeneralEnum.EXECUTION_PE_TESTSTARTED),
ACTION_SUCCESS_DOUBLECLICK(200, "OK", "Element '%ELEMENT%' double clicked.", false, false, false, MessageGeneralEnum.EXECUTION_PE_TESTSTARTED),
ACTION_SUCCESS_RIGHTCLICK(200, "OK", "Right click has been done on Element '%ELEMENT%'.", false, false, false, MessageGeneralEnum.EXECUTION_PE_TESTSTARTED),
ACTION_SUCCESS_URLLOGIN(200, "OK", "Opened '%URL%'.", false, false, false, MessageGeneralEnum.EXECUTION_PE_TESTSTARTED),
ACTION_SUCCESS_MOUSEOVER(200, "OK", "Mouse moved over '%ELEMENT%' with an offset %OFFSET%.", false, false, false, MessageGeneralEnum.EXECUTION_PE_TESTSTARTED),
ACTION_SUCCESS_MOUSEOVERANDWAIT(200, "OK", "Mouse moved over '%ELEMENT%' and waited %TIME% ms.", false, false, false, MessageGeneralEnum.EXECUTION_PE_TESTSTARTED),
ACTION_SUCCESS_WAIT_TIME(200, "OK", "Waited %TIME% ms.", false, false, false, MessageGeneralEnum.EXECUTION_PE_TESTSTARTED),
ACTION_SUCCESS_WAIT_TIME_WITHWARNINGS(200, "OK", "Waited %TIME% ms with warning : %MESSAGE%", false, false, false, MessageGeneralEnum.EXECUTION_PE_TESTSTARTED),
ACTION_SUCCESS_WAIT_ELEMENT(200, "OK", "Waited for %ELEMENT%.", false, false, false, MessageGeneralEnum.EXECUTION_PE_TESTSTARTED),
ACTION_SUCCESS_FOUND_ELEMENT(200, "OK", "%NUMBER% Element(s) identified by '%ELEMENT%' found. Used the first one.", false, false, false, MessageGeneralEnum.EXECUTION_PE_TESTSTARTED),
ACTION_SUCCESS_WAITVANISH_ELEMENT(200, "OK", "Waited for %ELEMENT% to disappear.", false, false, false, MessageGeneralEnum.EXECUTION_PE_TESTSTARTED),
ACTION_SUCCESS_KEYPRESS(200, "OK", "Key '%KEY%' pressed with success with modifier '%MODIFIER%' on element '%ELEMENT%'.", false, false, false, MessageGeneralEnum.EXECUTION_PE_TESTSTARTED),
ACTION_SUCCESS_KEYPRESS_NO_ELEMENT_NO_MODIFIER(200, "OK", "Key '%KEY%' pressed with success.", false, false, false, MessageGeneralEnum.EXECUTION_PE_TESTSTARTED),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ public interface IAppiumService {
* @param identifier
* @return
*/
MessageEvent click(Session session, Identifier identifier);
MessageEvent click(Session session, Identifier identifier, Integer hOffset, Integer vOffset);

/**
* @param session
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -146,9 +146,14 @@ public MessageEvent wait(Session session, Identifier identifier) {
@Override
public MessageEvent type(Session session, Identifier identifier, String valueToType, String propertyName) {
MessageEvent message;
MessageEvent foundElementMsg = new MessageEvent(MessageEventEnum.ACTION_FAILED_TYPE_NO_SUCH_ELEMENT);
try {
if (!StringUtil.isEmptyOrNULLString(valueToType)) {
WebElement elmt = this.getElement(session, identifier, false, false);
Integer numberOfElement = this.getNumberOfElements(session, identifier);
foundElementMsg = new MessageEvent(MessageEventEnum.ACTION_SUCCESS_FOUND_ELEMENT);
foundElementMsg.resolveDescription("NUMBER", numberOfElement.toString());
foundElementMsg.resolveDescription("ELEMENT", identifier.toString());
if (elmt instanceof MobileElement) {
((MobileElement) this.getElement(session, identifier, false, false)).setValue(valueToType);
} else { // FIXME See if we can delete it ??
Expand All @@ -163,7 +168,7 @@ public MessageEvent type(Session session, Identifier identifier, String valueToT
}
}
message = new MessageEvent(MessageEventEnum.ACTION_SUCCESS_TYPE);
message.setDescription(message.getDescription().replace("%ELEMENT%", identifier.getIdentifier() + "=" + identifier.getLocator()));
message.setDescription(message.getDescription().replace("%ELEMENT%", identifier.getIdentifier() + "=" + identifier.getLocator()).replace("ELEMENTFOUND", foundElementMsg.getDescription()));
if (!StringUtil.isEmptyOrNULLString(valueToType)) {
message.setDescription(message.getDescription().replace("%DATA%", ParameterParserUtil.securePassword(valueToType, propertyName)));
} else {
Expand All @@ -182,16 +187,27 @@ public MessageEvent type(Session session, Identifier identifier, String valueToT
}

@Override
public MessageEvent click(final Session session, final Identifier identifier) {
public MessageEvent click(final Session session, final Identifier identifier, Integer hOffset, Integer vOffset) {
try {
MessageEvent foundElementMsg;
final TouchAction action = new TouchAction(session.getAppiumDriver());

if (identifier.isSameIdentifier(Identifier.Identifiers.COORDINATE)) {
final Coordinates coordinates = getCoordinates(identifier);
action.tap(PointOption.point(coordinates.getX(), coordinates.getY())).perform();
Point offset = new Point(coordinates.getX(), coordinates.getY());
foundElementMsg = new MessageEvent(MessageEventEnum.ACTION_SUCCESS_FOUND_ELEMENT);
foundElementMsg.resolveDescription("NUMBER", "1");
foundElementMsg.resolveDescription("ELEMENT", identifier.toString());
action.tap(PointOption.point(offset)).perform();
} else {
action.tap(ElementOption.element(getElement(session, identifier, false, false))).perform();
WebElement element = getElement(session, identifier, false, false);
Integer numberOfElement = this.getNumberOfElements(session, identifier);
foundElementMsg = new MessageEvent(MessageEventEnum.ACTION_SUCCESS_FOUND_ELEMENT);
foundElementMsg.resolveDescription("NUMBER", numberOfElement.toString());
foundElementMsg.resolveDescription("ELEMENT", identifier.toString());
action.tap(ElementOption.element(element, hOffset, vOffset)).perform();
}
return new MessageEvent(MessageEventEnum.ACTION_SUCCESS_CLICK).resolveDescription("ELEMENT", identifier.toString());
return new MessageEvent(MessageEventEnum.ACTION_SUCCESS_CLICK).resolveDescription("ELEMENT", identifier.toString()).resolveDescription("ELEMENTFOUND", foundElementMsg.getDescription());
} catch (NoSuchElementException e) {
if (LOG.isDebugEnabled()) {
LOG.debug(e.getMessage());
Expand Down Expand Up @@ -486,13 +502,9 @@ public MessageEvent clearField(final Session session, final Identifier identifie
final TouchAction action = new TouchAction(session.getAppiumDriver());
if (identifier.isSameIdentifier(Identifier.Identifiers.COORDINATE)) {
final Coordinates coordinates = getCoordinates(identifier);
click(session, identifier);
click(session, identifier,0, 0);
} else {
click(session, identifier);
//action.press(ElementOption.element(getElement(session, identifier, false, false))).waitAction(WaitOptions.waitOptions(Duration.ofMillis(8000))).release().perform();
//MobileElement element = (MobileElement) session.getAppiumDriver().findElementByAccessibilityId("SomeAccessibilityID");
//element.clear();
// WebElement elmt = this.getElement(session, identifier, false, false);
click(session, identifier, 0 ,0);
this.getElement(session, identifier, false, false).clear();

}
Expand All @@ -508,4 +520,10 @@ public MessageEvent clearField(final Session session, final Identifier identifie
}

}

private Integer getNumberOfElements(Session session, Identifier identifier) {
By locator = this.getBy(identifier);
AppiumDriver driver = session.getAppiumDriver();
return driver.findElements(locator).size();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -504,6 +504,7 @@ public MessageEvent doSikuliActionClick(Session session, String locator, String

if (actionResult.getResultMessage().getCodeString().equals(new MessageEvent(MessageEventEnum.ACTION_SUCCESS).getCodeString())) {
MessageEvent message = new MessageEvent(MessageEventEnum.ACTION_SUCCESS_CLICK);
message.setDescription(message.getDescription().replace("%ELEMENTFOUND%", "At least 1 element found"));
message.setDescription(message.getDescription().replace("%ELEMENT%", locator));
return message;
}
Expand Down Expand Up @@ -630,6 +631,7 @@ public MessageEvent doSikuliActionType(Session session, String locator, String t

if (actionResult.getResultMessage().getCodeString().equals(new MessageEvent(MessageEventEnum.ACTION_SUCCESS).getCodeString())) {
MessageEvent message = new MessageEvent(MessageEventEnum.ACTION_SUCCESS_TYPE);
message.setDescription(message.getDescription().replace("%ELEMENTFOUND%", "At least 1 element found"));
message.setDescription(message.getDescription().replace("%ELEMENT%", locator));
message.setDescription(message.getDescription().replace("%DATA%", text));
return message;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -111,19 +111,19 @@ public interface IWebDriverService {

MessageEvent scrollTo(Session session, Identifier identifier, String text, String offsets);

MessageEvent doSeleniumActionClick(Session session, Identifier identifier, boolean waitForVisibility, boolean waitForClickability);
MessageEvent doSeleniumActionClick(Session session, Identifier identifier, Integer hOffset, Integer vOffset, boolean waitForVisibility, boolean waitForClickability);

MessageEvent doSeleniumActionMouseDown(Session session, Identifier identifier, boolean waitForVisibility, boolean waitForClickability);
MessageEvent doSeleniumActionMouseDown(Session session, Identifier identifier, Integer hOffset, Integer vOffset, boolean waitForVisibility, boolean waitForClickability);

MessageEvent doSeleniumActionMouseUp(Session session, Identifier identifier, boolean waitForVisibility, boolean waitForClickability);
MessageEvent doSeleniumActionMouseUp(Session session, Identifier identifier, Integer hOffset, Integer vOffset, boolean waitForVisibility, boolean waitForClickability);

MessageEvent doSeleniumActionSwitchToWindow(Session session, Identifier identifier);

MessageEvent doSeleniumActionManageDialog(Session session, Identifier identifier);

MessageEvent doSeleniumActionManageDialogKeyPress(Session session, String valueToPress);

MessageEvent doSeleniumActionDoubleClick(Session session, Identifier identifier, boolean waitForVisibility, boolean waitForClickability);
MessageEvent doSeleniumActionDoubleClick(Session session, Identifier identifier, Integer hOffset, Integer vOffset, boolean waitForVisibility, boolean waitForClickability);

MessageEvent doSeleniumActionType(Session session, Identifier identifier, String valueToType, String propertyName, boolean waitForVisibility, boolean waitForClickability);

Expand All @@ -145,7 +145,7 @@ public interface IWebDriverService {

MessageEvent doSeleniumActionFocusDefaultIframe(Session session);

MessageEvent doSeleniumActionRightClick(Session session, Identifier identifier);
MessageEvent doSeleniumActionRightClick(Session session, Identifier identifier, Integer hOffset, Integer vOffset);

MessageEvent doSeleniumActionDragAndDrop(Session session, Identifier object, Identifier property, boolean waitForVisibility, boolean waitForClickability) throws IOException;

Expand Down
Loading

0 comments on commit 8eb165f

Please sign in to comment.