55import org .json .simple .JSONArray ;
66import org .json .simple .JSONObject ;
77import org .json .simple .parser .ParseException ;
8- import org .openqa .selenium .OutputType ;
9- import org .openqa .selenium .TakesScreenshot ;
10- import org .openqa .selenium .WebDriver ;
11- import org .openqa .selenium .WebElement ;
8+ import org .openqa .selenium .Dimension ;
9+ import org .openqa .selenium .*;
10+ import org .openqa .selenium .Point ;
1211import util .driver .PageValidator ;
1312import util .general .HtmlReportBuilder ;
1413import util .general .SystemHelper ;
@@ -268,6 +267,38 @@ void validateGridAlignment(int columns, int rows) {
268267 }
269268 }
270269
270+ void validateRightOffsetForChunk (List <WebElement > elements ) {
271+ for (int i = 0 ; i < elements .size () - 1 ; i ++) {
272+ if (!elementsHasEqualLeftRightOffset (false , elements .get (i ), elements .get (i + 1 ))) {
273+ putJsonDetailsWithElement ("Element #" + (i + 1 ) + " has not the same right offset as element #" + (i + 2 ) + "" , elements .get (i + 1 ));
274+ }
275+ }
276+ }
277+
278+ void validateLeftOffsetForChunk (List <WebElement > elements ) {
279+ for (int i = 0 ; i < elements .size () - 1 ; i ++) {
280+ if (!elementsHasEqualLeftRightOffset (true , elements .get (i ), elements .get (i + 1 ))) {
281+ putJsonDetailsWithElement ("Element #" + (i + 1 ) + " has not the same left offset as element #" + (i + 2 ) + "" , elements .get (i + 1 ));
282+ }
283+ }
284+ }
285+
286+ void validateTopOffsetForChunk (List <WebElement > elements ) {
287+ for (int i = 0 ; i < elements .size () - 1 ; i ++) {
288+ if (!elementsHasEqualTopBottomOffset (true , elements .get (i ), elements .get (i + 1 ))) {
289+ putJsonDetailsWithElement ("Element #" + (i + 1 ) + " has not the same top offset as element #" + (i + 2 ) + "" , elements .get (i + 1 ));
290+ }
291+ }
292+ }
293+
294+ void validateBottomOffsetForChunk (List <WebElement > elements ) {
295+ for (int i = 0 ; i < elements .size () - 1 ; i ++) {
296+ if (!elementsHasEqualTopBottomOffset (false , elements .get (i ), elements .get (i + 1 ))) {
297+ putJsonDetailsWithElement ("Element #" + (i + 1 ) + " has not the same bottom offset as element #" + (i + 2 ) + "" , elements .get (i + 1 ));
298+ }
299+ }
300+ }
301+
271302 void validateRightOffsetForElements (WebElement element , String readableName ) {
272303 if (!element .equals (rootElement )) {
273304 if (!elementsHasEqualLeftRightOffset (false , element )) {
@@ -398,15 +429,30 @@ void validateSameSize(WebElement element, String readableName) {
398429 }
399430 }
400431
401- void validateSameSize (List <WebElement > elements ) {
432+ void validateSameSize (List <WebElement > elements , int type ) {
402433 for (int i = 0 ; i < elements .size () - 1 ; i ++) {
403434 int h1 = elements .get (i ).getSize ().getHeight ();
404435 int w1 = elements .get (i ).getSize ().getWidth ();
405436 int h2 = elements .get (i + 1 ).getSize ().getHeight ();
406437 int w2 = elements .get (i + 1 ).getSize ().getWidth ();
407- if (h1 != h2 || w1 != w2 ) {
408- putJsonDetailsWithElement ("Element #" + i + " has different size." , elements .get (i ));
409- putJsonDetailsWithElement ("Element #" + (i + 1 ) + " has different size." , elements .get (i + 1 ));
438+ switch (type ) {
439+ case 0 :
440+ if (h1 != h2 || w1 != w2 ) {
441+ putJsonDetailsWithElement ("Element #" + (i + 1 ) + " has different size." , elements .get (i ));
442+ putJsonDetailsWithElement ("Element #" + (i + 2 ) + " has different size." , elements .get (i + 1 ));
443+ }
444+ break ;
445+ case 1 :
446+ if (w1 != w2 ) {
447+ putJsonDetailsWithElement ("Element #" + (i + 1 ) + " has different width." , elements .get (i ));
448+ putJsonDetailsWithElement ("Element #" + (i + 2 ) + " has different width." , elements .get (i + 1 ));
449+ }
450+ break ;
451+ case 2 :
452+ if (h1 != h2 ) {
453+ putJsonDetailsWithElement ("Element #" + (i + 1 ) + " has different height." , elements .get (i ));
454+ putJsonDetailsWithElement ("Element #" + (i + 2 ) + " has different height." , elements .get (i + 1 ));
455+ }
410456 }
411457 }
412458 }
@@ -508,8 +554,8 @@ void validateLeftElement(WebElement leftElement) {
508554 }
509555
510556 boolean elementsAreOverlappedOnBorder (WebElement rootElement , WebElement elementOverlapWith ) {
511- org . openqa . selenium . Point elLoc = elementOverlapWith .getLocation ();
512- org . openqa . selenium . Dimension elSize = elementOverlapWith .getSize ();
557+ Point elLoc = elementOverlapWith .getLocation ();
558+ Dimension elSize = elementOverlapWith .getSize ();
513559 int xRoot = rootElement .getLocation ().x ;
514560 int yRoot = rootElement .getLocation ().y ;
515561 int widthRoot = rootElement .getSize ().width ;
@@ -529,8 +575,8 @@ boolean elementsAreOverlappedOnBorder(WebElement rootElement, WebElement element
529575 }
530576
531577 boolean elementsAreOverlapped (WebElement elementOverlapWith ) {
532- org . openqa . selenium . Point elLoc = elementOverlapWith .getLocation ();
533- org . openqa . selenium . Dimension elSize = elementOverlapWith .getSize ();
578+ Point elLoc = elementOverlapWith .getLocation ();
579+ Dimension elSize = elementOverlapWith .getSize ();
534580 return ((xRoot >= elLoc .x && yRoot > elLoc .y && xRoot < elLoc .x + elSize .width && yRoot < elLoc .y + elSize .height )
535581 || (xRoot + widthRoot > elLoc .x && yRoot > elLoc .y && xRoot + widthRoot < elLoc .x + elSize .width && yRoot < elLoc .y + elSize .height )
536582 || (xRoot > elLoc .x && yRoot + heightRoot > elLoc .y && xRoot < elLoc .x + elSize .width && yRoot + heightRoot < elLoc .y + elSize .height )
@@ -545,8 +591,8 @@ boolean elementsAreOverlapped(WebElement elementOverlapWith) {
545591 }
546592
547593 boolean elementsAreOverlapped (WebElement rootElement , WebElement elementOverlapWith ) {
548- org . openqa . selenium . Point elLoc = elementOverlapWith .getLocation ();
549- org . openqa . selenium . Dimension elSize = elementOverlapWith .getSize ();
594+ Point elLoc = elementOverlapWith .getLocation ();
595+ Dimension elSize = elementOverlapWith .getSize ();
550596 int xRoot = rootElement .getLocation ().x ;
551597 int yRoot = rootElement .getLocation ().y ;
552598 int widthRoot = rootElement .getSize ().width ;
@@ -566,8 +612,21 @@ boolean elementsAreOverlapped(WebElement rootElement, WebElement elementOverlapW
566612 }
567613
568614 boolean elementsHasEqualLeftRightOffset (boolean isLeft , WebElement elementToCompare ) {
569- org .openqa .selenium .Point elLoc = elementToCompare .getLocation ();
570- org .openqa .selenium .Dimension elSize = elementToCompare .getSize ();
615+ Point elLoc = elementToCompare .getLocation ();
616+ Dimension elSize = elementToCompare .getSize ();
617+
618+ if (isLeft ) {
619+ return xRoot == elLoc .getX ();
620+ } else {
621+ return (pageWidth - xRoot + widthRoot ) == (pageWidth - elLoc .getX () + elSize .getWidth ());
622+ }
623+ }
624+
625+ boolean elementsHasEqualLeftRightOffset (boolean isLeft , WebElement element , WebElement elementToCompare ) {
626+ Point elLoc = elementToCompare .getLocation ();
627+ Dimension elSize = elementToCompare .getSize ();
628+ int xRoot = element .getLocation ().x ;
629+ int widthRoot = element .getSize ().width ;
571630
572631 if (isLeft ) {
573632 return xRoot == elLoc .getX ();
@@ -576,9 +635,23 @@ boolean elementsHasEqualLeftRightOffset(boolean isLeft, WebElement elementToComp
576635 }
577636 }
578637
638+
579639 boolean elementsHasEqualTopBottomOffset (boolean isTop , WebElement elementToCompare ) {
580- org .openqa .selenium .Point elLoc = elementToCompare .getLocation ();
581- org .openqa .selenium .Dimension elSize = elementToCompare .getSize ();
640+ Point elLoc = elementToCompare .getLocation ();
641+ Dimension elSize = elementToCompare .getSize ();
642+
643+ if (isTop ) {
644+ return yRoot == elLoc .getY ();
645+ } else {
646+ return (pageHeight - yRoot + heightRoot ) == (pageHeight - elLoc .getY () + elSize .getHeight ());
647+ }
648+ }
649+
650+ boolean elementsHasEqualTopBottomOffset (boolean isTop , WebElement element , WebElement elementToCompare ) {
651+ Point elLoc = elementToCompare .getLocation ();
652+ Dimension elSize = elementToCompare .getSize ();
653+ int yRoot = element .getLocation ().y ;
654+ int heightRoot = element .getSize ().height ;
582655
583656 if (isTop ) {
584657 return yRoot == elLoc .getY ();
0 commit comments