11package util .validator ;
22
33import http .helpers .Helper ;
4+ import io .appium .java_client .AppiumDriver ;
45import org .apache .commons .io .FileUtils ;
56import org .apache .log4j .Logger ;
67import org .json .simple .JSONArray ;
@@ -752,8 +753,8 @@ int mobileY(int value) {
752753 }
753754
754755 long getPageWidth () {
756+ JavascriptExecutor executor = (JavascriptExecutor ) driver ;
755757 if (!isMobile ()) {
756- JavascriptExecutor executor = (JavascriptExecutor ) driver ;
757758 if (isFirefox ()) {
758759 currentZoom = (String ) executor .executeScript ("document.body.style.MozTransform" );
759760 } else {
@@ -766,13 +767,17 @@ long getPageWidth() {
766767 return (long ) executor .executeScript ("return document.getElementsByTagName('body')[0].offsetWidth" );
767768 }
768769 } else {
769- return driver .manage ().window ().getSize ().width ;
770+ if (isNativeMobileContext () || isIOS ()) {
771+ return driver .manage ().window ().getSize ().width ;
772+ } else {
773+ 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;}" );
774+ }
770775 }
771776 }
772777
773778 long getPageHeight () {
779+ JavascriptExecutor executor = (JavascriptExecutor ) driver ;
774780 if (!isMobile ()) {
775- JavascriptExecutor executor = (JavascriptExecutor ) driver ;
776781 if (isFirefox ()) {
777782 currentZoom = (String ) executor .executeScript ("document.body.style.MozTransform" );
778783 } else {
@@ -785,10 +790,18 @@ long getPageHeight() {
785790 return (long ) executor .executeScript ("return document.getElementsByTagName('body')[0].offsetHeight" );
786791 }
787792 } else {
788- return driver .manage ().window ().getSize ().height ;
793+ if (isNativeMobileContext () || isIOS ()) {
794+ return driver .manage ().window ().getSize ().height ;
795+ } else {
796+ 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;}" );
797+ }
789798 }
790799 }
791800
801+ private boolean isNativeMobileContext () {
802+ return ((AppiumDriver ) driver ).getContext ().contains ("NATIVE" );
803+ }
804+
792805 void validateInsideOfContainer (WebElement element , String readableContainerName ) {
793806 float xContainer = element .getLocation ().x ;
794807 float yContainer = element .getLocation ().y ;
0 commit comments