@@ -16,27 +16,11 @@ public class AndroidCapabilities extends Configuration {
1616 private static ADBUtils adbUtils = new ADBUtils ();
1717
1818 public static DesiredCapabilities setAppAndroidCapabilities (TestUIConfiguration configuration ) {
19- if (configuration .getEmulatorName ().isEmpty ()
20- && !adbUtils .getDeviceStatus (getDevice ()).equals ("device" )) {
21- System .err .println ("The device status is " + adbUtils .getDeviceStatus (getDevice ()) +
22- " to use usb, you must allow usb debugging for this device: " + getDevice ());
23- throw new Error ();
24- }
25- getDevModel (configuration );
26- String deviceVersion = Configuration .androidVersion .isEmpty () &&
27- configuration .getEmulatorName ().isEmpty () ?
28- adbUtils .getDeviceVersion (getDevice ()) : Configuration .androidVersion ;
19+ retrieveDevice (configuration );
2920 // Created object of DesiredCapabilities class.
30- DesiredCapabilities cap = new DesiredCapabilities ( );
21+ DesiredCapabilities cap = setChromeDriverCap ( configuration );
3122 if (getDesiredCapabilities () == null ) {
32- if (configuration .getEmulatorName ().isEmpty ()) {
33- cap .setCapability (MobileCapabilityType .DEVICE_NAME , getDevice ());
34- cap .setCapability (MobileCapabilityType .PLATFORM_VERSION , deviceVersion );
35- } else {
36- cap .setCapability (MobileCapabilityType .DEVICE_NAME ,
37- configuration .getEmulatorName ());
38- cap .setCapability (AndroidMobileCapabilityType .AVD , configuration .getEmulatorName ());
39- }
23+ cap .merge (setDeviceCapability (configuration ));
4024 cap .setCapability (AndroidMobileCapabilityType .APP_WAIT_DURATION ,
4125 Configuration .launchAppTimeout );
4226 if (Configuration .automationName .isEmpty ()) {
@@ -45,12 +29,6 @@ public static DesiredCapabilities setAppAndroidCapabilities(TestUIConfiguration
4529 cap .setCapability (MobileCapabilityType .AUTOMATION_NAME ,
4630 Configuration .automationName );
4731 }
48- if (!Configuration .chromeDriverPath .isEmpty ()) {
49- String chromePath = Configuration .chromeDriverPath .charAt (0 ) == '/'
50- ? Configuration .chromeDriverPath
51- : System .getProperty ("user.dir" ) + "/" + Configuration .chromeDriverPath ;
52- cap .setCapability (AndroidMobileCapabilityType .CHROMEDRIVER_EXECUTABLE , chromePath );
53- }
5432 cap .setCapability (MobileCapabilityType .PLATFORM_NAME , Platform .ANDROID );
5533 if (!Configuration .appActivity .isEmpty () && !Configuration .appPackage .isEmpty ()) {
5634 cap .setCapability (AndroidMobileCapabilityType .APP_ACTIVITY ,
@@ -65,8 +43,7 @@ public static DesiredCapabilities setAppAndroidCapabilities(TestUIConfiguration
6543 cap .setCapability ("androidInstallPath" , appPath );
6644 cap .setCapability ("app" , appPath );
6745 }
68- int systemPort = Integer .parseInt (getUsePort ().get (getUsePort ().size () - 1 )) + 10 ;
69- cap .setCapability (AndroidMobileCapabilityType .SYSTEM_PORT , systemPort );
46+ cap .merge (setPortCapabilities (configuration ));
7047 } else {
7148 cap = getDesiredCapabilities ();
7249 }
@@ -83,6 +60,43 @@ public static DesiredCapabilities setAppAndroidCapabilities(TestUIConfiguration
8360
8461 public static DesiredCapabilities setAndroidBrowserCapabilities (
8562 TestUIConfiguration configuration ) {
63+ retrieveDevice (configuration );
64+ // Created object of DesiredCapabilities class.
65+ DesiredCapabilities cap = setChromeDriverCap (configuration );
66+ if (getDesiredCapabilities () == null ) {
67+ cap .merge (setDeviceCapability (configuration ));
68+ if (Configuration .automationName .isEmpty ()) {
69+ cap .setCapability (MobileCapabilityType .AUTOMATION_NAME , "UiAutomator2" );
70+ } else {
71+ cap .setCapability (MobileCapabilityType .AUTOMATION_NAME ,
72+ Configuration .automationName );
73+ }
74+ cap .merge (setPortCapabilities (configuration ));
75+ cap .setCapability (MobileCapabilityType .NO_RESET , true );
76+ cap .setCapability (MobileCapabilityType .PLATFORM_NAME , Platform .ANDROID );
77+ cap .setCapability (MobileCapabilityType .BROWSER_NAME , "chrome" );
78+ cap .setCapability (AndroidMobileCapabilityType .NATIVE_WEB_SCREENSHOT , true );
79+ if (!Configuration .useW3C ) {
80+ ChromeOptions chromeOptions = new ChromeOptions ();
81+ chromeOptions .setExperimentalOption ("w3c" , false );
82+ cap .merge (chromeOptions );
83+ }
84+ } else {
85+ cap = getDesiredCapabilities ();
86+ }
87+ // ADD CUSTOM CAPABILITIES
88+ if (!Configuration .addMobileDesiredCapabilities .asMap ().isEmpty ()) {
89+ for (String key : addMobileDesiredCapabilities .asMap ().keySet ()) {
90+ cap .setCapability (key , addMobileDesiredCapabilities .asMap ().get (key ));
91+ }
92+ addMobileDesiredCapabilities = new DesiredCapabilities ();
93+ }
94+ Configuration .desiredCapabilities = cap ;
95+ return cap ;
96+ }
97+
98+
99+ private static void retrieveDevice (TestUIConfiguration configuration ) {
86100 if (Configuration .appiumUrl .isEmpty ()) {
87101 if (configuration .getEmulatorName ().isEmpty () && getDevices ().size () == 0 ) {
88102 throw new Error ("There is no device available to run the automation!" );
@@ -107,7 +121,42 @@ public static DesiredCapabilities setAndroidBrowserCapabilities(
107121 }
108122 }
109123 }
110- // Created object of DesiredCapabilities class.
124+ }
125+
126+ private static DesiredCapabilities setDeviceCapability (TestUIConfiguration configuration ) {
127+ DesiredCapabilities cap = new DesiredCapabilities ();
128+ if (configuration .getEmulatorName ().isEmpty ()) {
129+ String udid = configuration .getUDID ().isEmpty () ? getDevice ()
130+ : configuration .getUDID ();
131+ cap .setCapability (MobileCapabilityType .UDID , udid );
132+ cap .setCapability (MobileCapabilityType .DEVICE_NAME , udid );
133+ } else {
134+ cap .setCapability (AndroidMobileCapabilityType .AVD , configuration .getEmulatorName ());
135+ }
136+
137+ return cap ;
138+ }
139+
140+ private static DesiredCapabilities setPortCapabilities (TestUIConfiguration configuration ) {
141+ DesiredCapabilities cap = new DesiredCapabilities ();
142+ if (configuration .getAppiumUrl ().isEmpty ()) {
143+ int systemPort = Integer .parseInt (getUsePort ().get (getUsePort ().size () - 1 )) + 10 ;
144+ int chromeDriverPort = Integer .parseInt (getUsePort ().get (getUsePort ().size () - 1 )) + 15 ;
145+ cap .setCapability ("chromeDriverPort" , chromeDriverPort );
146+ cap .setCapability (AndroidMobileCapabilityType .SYSTEM_PORT , systemPort );
147+ }
148+ if (Configuration .chromeDriverPort != 0 ) {
149+ cap .setCapability ("chromeDriverPort" , chromeDriverPort );
150+ }
151+ if (Configuration .systemPort != 0 ) {
152+ cap .setCapability (AndroidMobileCapabilityType .SYSTEM_PORT , systemPort );
153+ }
154+
155+ return cap ;
156+ }
157+
158+ private static DesiredCapabilities setChromeDriverCap (
159+ TestUIConfiguration configuration ) {
111160 DesiredCapabilities cap = new DesiredCapabilities ();
112161 if (!configuration .getChromeDriverPath ().isEmpty ()) {
113162 String slash = System .getProperty ("os.name" ).toLowerCase ().contains ("w" ) ? "\\ " : "/" ;
@@ -116,57 +165,11 @@ public static DesiredCapabilities setAndroidBrowserCapabilities(
116165 ? configuration .getChromeDriverPath ()
117166 : System .getProperty ("user.dir" ) + slash + configuration .getChromeDriverPath ();
118167 cap .setCapability (AndroidMobileCapabilityType .CHROMEDRIVER_EXECUTABLE , chromePath );
168+ return cap ;
119169 }
120- if (getDesiredCapabilities () == null ) {
121- if (configuration .getEmulatorName ().isEmpty ()) {
122- String udid = configuration .getUDID ().isEmpty () ? getDevice ()
123- : configuration .getUDID ();
124- cap .setCapability (MobileCapabilityType .UDID , udid );
125- cap .setCapability (MobileCapabilityType .DEVICE_NAME , udid );
126- } else {
127- cap .setCapability (AndroidMobileCapabilityType .AVD , configuration .getEmulatorName ());
128- }
129- if (Configuration .automationName .isEmpty ()) {
130- cap .setCapability (MobileCapabilityType .AUTOMATION_NAME , "UiAutomator2" );
131- } else {
132- cap .setCapability (MobileCapabilityType .AUTOMATION_NAME ,
133- Configuration .automationName );
134- }
135- if (configuration .getAppiumUrl ().isEmpty ()) {
136- int systemPort = Integer .parseInt (getUsePort ().get (getUsePort ().size () - 1 )) + 10 ;
137- int chromeDriverPort = Integer .parseInt (getUsePort ().get (getUsePort ().size () - 1 )) + 15 ;
138- cap .setCapability ("chromeDriverPort" , chromeDriverPort );
139- cap .setCapability (AndroidMobileCapabilityType .SYSTEM_PORT , systemPort );
140- }
141- if (Configuration .chromeDriverPort != 0 ) {
142- cap .setCapability ("chromeDriverPort" , chromeDriverPort );
143- }
144- if (Configuration .systemPort != 0 ) {
145- cap .setCapability (AndroidMobileCapabilityType .SYSTEM_PORT , systemPort );
146- }
147- cap .setCapability (MobileCapabilityType .NO_RESET , true );
148- cap .setCapability (MobileCapabilityType .PLATFORM_NAME , Platform .ANDROID );
149- cap .setCapability (MobileCapabilityType .BROWSER_NAME , "chrome" );
150- cap .setCapability (AndroidMobileCapabilityType .NATIVE_WEB_SCREENSHOT , true );
151- if (!Configuration .useW3C ) {
152- ChromeOptions chromeOptions = new ChromeOptions ();
153- chromeOptions .setExperimentalOption ("w3c" , false );
154- cap .merge (chromeOptions );
155- }
156- } else {
157- cap = getDesiredCapabilities ();
158- }
159- // ADD CUSTOM CAPABILITIES
160- if (!Configuration .addMobileDesiredCapabilities .asMap ().isEmpty ()) {
161- for (String key : addMobileDesiredCapabilities .asMap ().keySet ()) {
162- cap .setCapability (key , addMobileDesiredCapabilities .asMap ().get (key ));
163- }
164- addMobileDesiredCapabilities = new DesiredCapabilities ();
165- }
166- Configuration .desiredCapabilities = cap ;
170+
167171 return cap ;
168172 }
169-
170173 private static void getDevModel (TestUIConfiguration configuration ) {
171174 String devModel ;
172175 if (configuration .getEmulatorName ().isEmpty ()) {
0 commit comments