77import org .labkey .test .util .DataRegionTable ;
88import org .labkey .test .util .TestLogger ;
99import org .openqa .selenium .JavascriptExecutor ;
10- import org .openqa .selenium .Point ;
1110import org .openqa .selenium .Rectangle ;
1211import org .openqa .selenium .WebDriver ;
1312import org .openqa .selenium .WebElement ;
@@ -47,9 +46,9 @@ public static boolean scrollUnderStickyFormButtons(WebElement webElement)
4746 return false ;
4847 }
4948
50- public static boolean scrollUnderFloatingHeader (WebElement webElement )
49+ public static boolean scrollUnderFloatingHeader (WebElement targetElement )
5150 {
52- WebDriver webDriver = extractWebDriver (webElement );
51+ WebDriver webDriver = extractWebDriver (targetElement );
5352
5453 List <WebElement > floatingHeaders = Locator .findElements (webDriver ,
5554 Locators .floatingHeaderContainer (),
@@ -60,23 +59,22 @@ public static boolean scrollUnderFloatingHeader(WebElement webElement)
6059
6160 if (!floatingHeaders .isEmpty ())
6261 {
63- Rectangle rect = webElement .getRect ();
64- Point elementCenter = new Point (rect .getX () + rect .getWidth ()/2 , rect .getY () + rect .getHeight ()/2 );
62+ Rectangle rect = targetElement .getRect ();
6563
66- if (floatingHeaders .stream ().anyMatch (el -> pointInRect ( elementCenter , el .getRect ())))
64+ if (floatingHeaders .stream ().anyMatch (headerEl -> rectanglesOverlap ( rect , headerEl .getRect ())))
6765 {
6866 TestLogger .debug ("Scrolled under floating headers:\n " + floatingHeaders .stream ().map (WebElement ::toString ).collect (Collectors .joining ("\n " )));
69- ((Locatable ) webElement ).getCoordinates ().inViewPort (); // 'inViewPort()' will scroll element into view
67+ ((Locatable ) targetElement ).getCoordinates ().inViewPort (); // 'inViewPort()' will scroll element into view
7068 return true ;
7169 }
7270 }
7371 return false ;
7472 }
7573
76- private static boolean pointInRect ( Point point , Rectangle rect )
74+ private static boolean rectanglesOverlap ( Rectangle r1 , Rectangle r2 )
7775 {
78- return rect .getX () <= point .getX () && point .getX () <= rect .getX () + rect .getWidth () &&
79- rect .getY () <= point .getY () && point .getY () <= rect .getY () + rect .getHeight ();
76+ return r1 .getX () < r2 .getX () + r2 . getWidth () && r2 .getX () < r1 .getX () + r1 .getWidth ()
77+ && r1 .getY () < r2 .getY () + r2 . getHeight () && r2 .getY () < r1 .getY () + r1 .getHeight ();
8078 }
8179
8280 public static Long getWindowScrollY (WebDriver webDriver )
0 commit comments