@@ -41,6 +41,7 @@ public class ResponsiveUIValidator {
4141 private static Color rootColor = new Color (255 , 0 , 0 , 255 );
4242 private static Color highlightedElementsColor = new Color (255 , 0 , 255 , 255 );
4343 private static Color linesColor = Color .ORANGE ;
44+ private static String currentZoom = "100%" ;
4445 private static File screenshot ;
4546 private static BufferedImage img ;
4647 private static Graphics2D g ;
@@ -697,6 +698,10 @@ String getFormattedMessage(WebElement element) {
697698 }
698699
699700 int getRetinaValue (int value ) {
701+ int zoom = Integer .valueOf (currentZoom .replace ("%" , "" ));
702+ if (zoom != 100 ){
703+ value = (int ) (value - (value * Math .abs (zoom - 100f ) / 100f ));
704+ }
700705 if (isRetinaDisplay () && isChrome ()) {
701706 return 2 * value ;
702707 } else {
@@ -707,7 +712,13 @@ int getRetinaValue(int value) {
707712 long getPageWidth () {
708713 if (!isMobile ()) {
709714 JavascriptExecutor executor = (JavascriptExecutor ) driver ;
710- return (long ) executor .executeScript ("if (self.innerWidth) {return self.innerWidth;} if (document.documentElement && document.documentElement.clientWidth) {return document.documentElement.clientWidth;}if (document.body) {return document.body.clientWidth;}" );
715+ currentZoom = (String ) executor .executeScript ("return document.body.style.zoom;" );
716+ if (currentZoom .equals ("100%" ) || currentZoom .equals ("" )) {
717+ currentZoom = "100%" ;
718+ return (long ) executor .executeScript ("if (self.innerWidth) {return self.innerWidth;} if (document.documentElement && document.documentElement.clientWidth) {return document.documentElement.clientWidth;}if (document.body) {return document.body.clientWidth;}" );
719+ } else {
720+ return (long ) executor .executeScript ("return document.getElementsByTagName('body')[0].offsetWidth" );
721+ }
711722 } else {
712723 return driver .manage ().window ().getSize ().width ;
713724 }
@@ -716,7 +727,13 @@ long getPageWidth() {
716727 long getPageHeight () {
717728 if (!isMobile ()) {
718729 JavascriptExecutor executor = (JavascriptExecutor ) driver ;
719- return (long ) executor .executeScript ("if (self.innerHeight) {return self.innerHeight;} if (document.documentElement && document.documentElement.clientHeight) {return document.documentElement.clientHeight;}if (document.body) {return document.body.clientHeight;}" );
730+ currentZoom = (String ) executor .executeScript ("return document.body.style.zoom;" );
731+ if (currentZoom .equals ("100%" ) || currentZoom .equals ("" )) {
732+ currentZoom = "100%" ;
733+ return (long ) executor .executeScript ("if (self.innerHeight) {return self.innerHeight;} if (document.documentElement && document.documentElement.clientHeight) {return document.documentElement.clientHeight;}if (document.body) {return document.body.clientHeight;}" );
734+ } else {
735+ return (long ) executor .executeScript ("return document.getElementsByTagName('body')[0].offsetHeight" );
736+ }
720737 } else {
721738 return driver .manage ().window ().getSize ().height ;
722739 }
0 commit comments