Skip to content

Commit 4e03a97

Browse files
committed
Fix issue with [issue/feature name]
1 parent 3c3ba6c commit 4e03a97

File tree

10 files changed

+185
-120
lines changed

10 files changed

+185
-120
lines changed

.idea/misc.xml

Lines changed: 0 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@
4343
<dependency>
4444
<groupId>io.appium</groupId>
4545
<artifactId>java-client</artifactId>
46-
<version>7.6.0</version>
46+
<version>8.6.0</version>
4747
<scope>test</scope>
4848
</dependency>
4949
</dependencies>
Lines changed: 56 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,68 +1,88 @@
11
package com.lambdatest;
22

3-
import io.appium.java_client.MobileBy;
3+
import io.appium.java_client.AppiumBy;
4+
import io.appium.java_client.android.AndroidDriver;
45
import org.junit.After;
56
import org.junit.Before;
67
import org.junit.Test;
7-
import org.openqa.selenium.remote.DesiredCapabilities;
8-
import org.openqa.selenium.remote.RemoteWebDriver;
98
import org.openqa.selenium.By;
10-
9+
import org.openqa.selenium.WebElement;
10+
import org.openqa.selenium.remote.DesiredCapabilities;
1111
import org.openqa.selenium.support.ui.ExpectedConditions;
1212
import org.openqa.selenium.support.ui.WebDriverWait;
1313

1414
import java.net.URL;
15+
import java.time.Duration;
16+
import java.util.HashMap;
1517

1618
public class android {
17-
String username = System.getenv("LT_USERNAME") == null ? "LT_USERNAME" : System.getenv("LT_USERNAME"); //Enter the Username here
18-
String accessKey = System.getenv("LT_ACCESS_KEY") == null ? "LT_ACCESS_KEY" : System.getenv("LT_ACCESS_KEY"); //Enter the Access key here
19-
public String app_id = System.getenv("LT_APP_ID") == null ? "lt://proverbial-android" : System.getenv("LT_APP_ID"); //Enter your LambdaTest App ID at the place of lt://proverbial-android
20-
public String grid_url = System.getenv("LT_GRID_URL") == null ? "mobile-hub.lambdatest.com" : System.getenv("LT_GRID_URL");
19+
String username = System.getenv("LT_USERNAME") == null ? "YOUR_USERNAME" : System.getenv("LT_USERNAME");
20+
String accessKey = System.getenv("LT_ACCESS_KEY") == null ? "YOUR_ACCESS_KEY" : System.getenv("LT_ACCESS_KEY");
2121
public String status = "passed";
2222

23-
public static RemoteWebDriver driver = null;
23+
// Fix 1: Use AndroidDriver instead of RemoteWebDriver
24+
public static AndroidDriver driver = null;
2425

2526
@Before
2627
public void setUp() throws Exception {
2728
DesiredCapabilities capabilities = new DesiredCapabilities();
2829

29-
capabilities.setCapability("build", "JUNIT Native App automation");
30-
capabilities.setCapability("name", "Java JUnit Android");
31-
capabilities.setCapability("platformName", "android");
32-
capabilities.setCapability("deviceName", "Pixel.*"); //Enter the name of the device here
33-
capabilities.setCapability("isRealMobile", true);
34-
capabilities.setCapability("platformVersion", "12");
35-
capabilities.setCapability("app", app_id); //Enter the App ID here
36-
capabilities.setCapability("deviceOrientation", "PORTRAIT");
37-
capabilities.setCapability("network", false);
38-
capabilities.setCapability("visual", true);
39-
capabilities.setCapability("autoGrantPermissions", true);
40-
41-
driver = new RemoteWebDriver(new URL("https://" + username + ":" + accessKey + "@" + grid_url + "/wd/hub"),
30+
// Fix 2: Use lt:options for W3C compliance
31+
HashMap<String, Object> ltOptions = new HashMap<String, Object>();
32+
ltOptions.put("w3c", true);
33+
ltOptions.put("platformName", "android");
34+
ltOptions.put("deviceName", "Pixel.*");
35+
ltOptions.put("platformVersion", "12");
36+
ltOptions.put("isRealMobile", true);
37+
ltOptions.put("app", "lt://APP10160622431766424164986229");
38+
ltOptions.put("build", "JUNIT Native App automation");
39+
ltOptions.put("name", "Java JUnit Android");
40+
ltOptions.put("visual", true);
41+
ltOptions.put("console", true);
42+
ltOptions.put("autoGrantPermissions", true);
43+
44+
capabilities.setCapability("lt:options", ltOptions);
45+
46+
driver = new AndroidDriver(
47+
new URL("https://" + username + ":" + accessKey + "@mobile-hub.lambdatest.com/wd/hub"),
4248
capabilities);
4349
}
4450

4551
@Test
4652
public void testSimple() throws Exception {
4753
try {
48-
WebDriverWait wait = new WebDriverWait(driver, 30);
49-
wait.until(ExpectedConditions.elementToBeClickable(MobileBy.id("color"))).click();
50-
wait.until(ExpectedConditions.elementToBeClickable(MobileBy.id("geoLocation"))).click();
51-
Thread.sleep(5000);
54+
// Fix 3: Use Duration for WebDriverWait in Selenium 4
55+
WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(30));
56+
57+
// Fix 4: Use AppiumBy instead of MobileBy
58+
wait.until(ExpectedConditions.elementToBeClickable(AppiumBy.id("color"))).click();
59+
wait.until(ExpectedConditions.elementToBeClickable(AppiumBy.id("geoLocation"))).click();
60+
61+
Thread.sleep(2000);
62+
63+
// Fix 5: Proper Mobile Back Navigation
5264
driver.navigate().back();
53-
wait.until(ExpectedConditions.elementToBeClickable(MobileBy.id("Text"))).click();
54-
wait.until(ExpectedConditions.elementToBeClickable(MobileBy.id("notification"))).click();
55-
wait.until(ExpectedConditions.elementToBeClickable(MobileBy.id("toast"))).click();
56-
wait.until(ExpectedConditions.elementToBeClickable(By.id("webview"))).click();
57-
Thread.sleep(10000);
58-
wait.until(ExpectedConditions.elementToBeClickable(MobileBy.id("url"))).sendKeys("https://www.lambdatest.com/");
59-
wait.until(ExpectedConditions.elementToBeClickable(MobileBy.id("find"))).click();
60-
Thread.sleep(5000);
65+
66+
wait.until(ExpectedConditions.elementToBeClickable(AppiumBy.id("Text"))).click();
67+
wait.until(ExpectedConditions.elementToBeClickable(AppiumBy.id("notification"))).click();
68+
wait.until(ExpectedConditions.elementToBeClickable(AppiumBy.id("toast"))).click();
69+
70+
// Interaction with WebView
71+
wait.until(ExpectedConditions.elementToBeClickable(AppiumBy.id("webview"))).click();
72+
73+
WebElement urlField = wait.until(ExpectedConditions.elementToBeClickable(AppiumBy.id("url")));
74+
urlField.sendKeys("https://www.lambdatest.com/");
75+
76+
driver.findElement(AppiumBy.id("find")).click();
77+
78+
Thread.sleep(2000);
6179
driver.navigate().back();
80+
6281
status = "passed";
6382
} catch (Exception e) {
64-
System.out.println(e.getMessage());
83+
System.out.println("Test Error: " + e.getMessage());
6584
status = "failed";
85+
throw e;
6686
}
6787
}
6888

@@ -73,5 +93,4 @@ public void tearDown() throws Exception {
7393
driver.quit();
7494
}
7595
}
76-
}
77-
96+
}

src/test/java/com/lambdatest/androidWeb.java

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,15 @@
44
import org.junit.Before;
55
import org.junit.Test;
66
import org.openqa.selenium.By;
7+
import org.openqa.selenium.chrome.ChromeOptions;
78
import org.openqa.selenium.remote.DesiredCapabilities;
89
import org.openqa.selenium.remote.RemoteWebDriver;
910
import org.openqa.selenium.support.ui.ExpectedConditions;
1011
import org.openqa.selenium.support.ui.WebDriverWait;
1112

1213
import java.net.URL;
14+
import java.time.Duration;
15+
import java.util.HashMap;
1316
import java.util.concurrent.TimeUnit;
1417

1518
public class androidWeb {
@@ -24,17 +27,22 @@ public class androidWeb {
2427
@Before
2528
public void setUp() throws Exception {
2629
DesiredCapabilities capabilities = new DesiredCapabilities();
30+
HashMap<String, Object> ltOptions = new HashMap<String, Object>();
31+
ltOptions.put("build", "JUNIT Native Web automation");
32+
ltOptions.put("name", "Java JUnit Android");
33+
ltOptions.put("platformName", "android");
34+
ltOptions.put("deviceName", "Pixel .*"); //Enter the name of the device here
35+
ltOptions.put("isRealMobile", true);
36+
ltOptions.put("platformVersion", "14");
37+
ltOptions.put("deviceOrientation", "PORTRAIT");
38+
ltOptions.put("console", true);
39+
ltOptions.put("network", false);
40+
ltOptions.put("visual", true);
41+
ltOptions.put("browserName", "chrome");
42+
ltOptions.put("autoGrantPermissions", true);
43+
capabilities.setCapability("lt:options", ltOptions);
44+
2745

28-
capabilities.setCapability("build", "JUNIT Native Web automation");
29-
capabilities.setCapability("name", "Java JUnit Android");
30-
capabilities.setCapability("platformName", "android");
31-
capabilities.setCapability("deviceName", "Pixel .*"); //Enter the name of the device here
32-
capabilities.setCapability("isRealMobile", true);
33-
capabilities.setCapability("platformVersion", "12");
34-
capabilities.setCapability("deviceOrientation", "PORTRAIT");
35-
capabilities.setCapability("console", true);
36-
capabilities.setCapability("network", false);
37-
capabilities.setCapability("visual", true);
3846

3947
driver = new RemoteWebDriver(new URL("https://" + username + ":" + accessKey + "@" + grid_url + "/wd/hub"),
4048
capabilities);
@@ -46,7 +54,7 @@ public void testSimple() throws Exception {
4654
driver.manage().timeouts().setScriptTimeout(10, TimeUnit.SECONDS);
4755
driver.get("https://mfml.in/api/getInfo");
4856
driver.getWindowHandles().forEach(handle -> System.out.println(handle));
49-
WebDriverWait wait = new WebDriverWait(driver, 30);
57+
WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(30));
5058
wait.until(ExpectedConditions.elementToBeClickable(By.id("resolution"))).click();
5159
wait.until(ExpectedConditions.elementToBeClickable(By.id("location"))).click();
5260
wait.until(ExpectedConditions.elementToBeClickable(By.id("details"))).click();
Lines changed: 56 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,77 +1,98 @@
11
package com.lambdatest;
22

3-
import io.appium.java_client.MobileBy;
3+
// Use Appium-specific imports
4+
import io.appium.java_client.AppiumBy;
5+
import io.appium.java_client.ios.IOSDriver;
46
import org.junit.After;
57
import org.junit.Before;
68
import org.junit.Test;
79
import org.openqa.selenium.remote.DesiredCapabilities;
8-
import org.openqa.selenium.remote.RemoteWebDriver;
9-
import org.openqa.selenium.By;
10-
1110
import org.openqa.selenium.support.ui.ExpectedConditions;
1211
import org.openqa.selenium.support.ui.WebDriverWait;
1312

1413
import java.net.URL;
14+
import java.time.Duration;
15+
import java.util.HashMap;
1516

1617
public class ios {
17-
String username = System.getenv("LT_USERNAME") == null ? "LT_USERNAME" : System.getenv("LT_USERNAME"); //Enter the Username here
18-
String accessKey = System.getenv("LT_ACCESS_KEY") == null ? "LT_ACCESS_KEY" : System.getenv("LT_ACCESS_KEY"); //Enter the Access key here
19-
public String app_id = System.getenv("LT_APP_ID") == null ? "lt://proverbial-ios" : System.getenv("LT_APP_ID"); //Enter your LambdaTest App ID at the place of lt://proverbial-android
20-
public String grid_url = System.getenv("LT_GRID_URL") == null ? "mobile-hub.lambdatest.com" : System.getenv("LT_GRID_URL");
18+
String username = System.getenv("LT_USERNAME") == null ? "YOUR_USERNAME" : System.getenv("LT_USERNAME");
19+
String accessKey = System.getenv("LT_ACCESS_KEY") == null ? "YOUR_ACCESS_KEY" : System.getenv("LT_ACCESS_KEY");
20+
public String grid_url = "mobile-hub.lambdatest.com";
2121
public String status = "passed";
2222

23-
public static RemoteWebDriver driver = null;
24-
23+
// FIX 1: Use IOSDriver instead of RemoteWebDriver
24+
public static IOSDriver driver = null;
2525

2626
@Before
2727
public void setUp() throws Exception {
2828
DesiredCapabilities capabilities = new DesiredCapabilities();
29+
HashMap<String, Object> ltOptions = new HashMap<String, Object>();
30+
31+
ltOptions.put("build", "JUNIT Native App automation");
32+
ltOptions.put("name", "Java JUnit iOS");
33+
ltOptions.put("platformName", "ios");
34+
ltOptions.put("deviceName", "iPhone.*");
35+
ltOptions.put("isRealMobile", true);
36+
ltOptions.put("platformVersion", "18");
37+
ltOptions.put("app", "lt://APP1016018631760361477812757");
38+
ltOptions.put("network", false);
39+
ltOptions.put("visual", true);
40+
ltOptions.put("w3c", true); // Ensure W3C is enabled
41+
42+
capabilities.setCapability("lt:options", ltOptions);
2943

30-
capabilities.setCapability("build", "JUNIT Native App automation");
31-
capabilities.setCapability("name", "Java JUnit iOS");
32-
capabilities.setCapability("platformName", "ios");
33-
capabilities.setCapability("deviceName", "iPhone.*");
34-
capabilities.setCapability("isRealMobile", true);
35-
capabilities.setCapability("platformVersion", "15");
36-
capabilities.setCapability("app", app_id); //Enter the APP_ID here
37-
capabilities.setCapability("network", false);
38-
capabilities.setCapability("visual", true);
39-
40-
driver = new RemoteWebDriver(new URL("https://" + username + ":" + accessKey + "@" + grid_url + "/wd/hub"),
44+
// FIX 2: Initialize as IOSDriver
45+
driver = new IOSDriver(new URL("https://" + username + ":" + accessKey + "@" + grid_url + "/wd/hub"),
4146
capabilities);
4247
}
4348

4449
@Test
4550
public void testSimple() throws Exception {
4651
try {
47-
WebDriverWait wait = new WebDriverWait(driver, 30);
48-
wait.until(ExpectedConditions.elementToBeClickable(MobileBy.id("color"))).click();
49-
wait.until(ExpectedConditions.elementToBeClickable(MobileBy.id("geoLocation"))).click();
52+
WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(30));
53+
54+
// FIX 3: Use AppiumBy instead of MobileBy
55+
wait.until(ExpectedConditions.elementToBeClickable(AppiumBy.id("color"))).click();
56+
wait.until(ExpectedConditions.elementToBeClickable(AppiumBy.id("geoLocation"))).click();
57+
58+
Thread.sleep(2000);
59+
60+
// FIX 4: iOS navigate().back() is often not supported.
61+
// If this fails, you must click the 'Back' button element in your UI instead.
62+
try {
63+
driver.navigate().back();
64+
} catch (Exception e) {
65+
System.out.println("Standard back not supported, skipping or use element click.");
66+
}
67+
68+
wait.until(ExpectedConditions.elementToBeClickable(AppiumBy.id("Text"))).click();
69+
wait.until(ExpectedConditions.elementToBeClickable(AppiumBy.id("notification"))).click();
70+
wait.until(ExpectedConditions.elementToBeClickable(AppiumBy.id("toast"))).click();
71+
72+
// Navigate to Browser/WebView
73+
wait.until(ExpectedConditions.elementToBeClickable(AppiumBy.accessibilityId("Browser"))).click();
5074
Thread.sleep(5000);
51-
driver.navigate().back();
52-
wait.until(ExpectedConditions.elementToBeClickable(MobileBy.id("Text"))).click();
53-
wait.until(ExpectedConditions.elementToBeClickable(MobileBy.id("notification"))).click();
54-
wait.until(ExpectedConditions.elementToBeClickable(MobileBy.id("toast"))).click();
55-
wait.until(ExpectedConditions.elementToBeClickable(By.id("Browser"))).click();
56-
Thread.sleep(10000);
57-
wait.until(ExpectedConditions.elementToBeClickable(MobileBy.id("url"))).sendKeys("https://www.lambdatest.com/");
58-
wait.until(ExpectedConditions.elementToBeClickable(MobileBy.id("find"))).click();
75+
76+
wait.until(ExpectedConditions.elementToBeClickable(AppiumBy.id("url"))).sendKeys("https://www.lambdatest.com/");
77+
wait.until(ExpectedConditions.elementToBeClickable(AppiumBy.id("find"))).click();
78+
5979
Thread.sleep(5000);
80+
// navigate back to app
6081
driver.navigate().back();
6182

6283
status = "passed";
6384
} catch (Exception e) {
64-
System.out.println(e.getMessage());
85+
System.out.println("Test failed: " + e.getMessage());
6586
status = "failed";
6687
}
6788
}
6889

6990
@After
7091
public void tearDown() throws Exception {
7192
if (driver != null) {
93+
// FIX 5: Use the correct LambdaTest status hook for Appium 2.x
7294
driver.executeScript("lambda-status=" + status);
7395
driver.quit();
7496
}
7597
}
76-
}
77-
98+
}

src/test/java/com/lambdatest/iosWeb.java

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010
import org.openqa.selenium.support.ui.WebDriverWait;
1111

1212
import java.net.URL;
13+
import java.time.Duration;
14+
import java.util.HashMap;
1315
import java.util.concurrent.TimeUnit;
1416

1517
public class iosWeb {
@@ -24,16 +26,18 @@ public class iosWeb {
2426
@Before
2527
public void setUp() throws Exception {
2628
DesiredCapabilities capabilities = new DesiredCapabilities();
29+
HashMap<String, Object> ltOptions = new HashMap<String, Object>();
2730

28-
capabilities.setCapability("build", "JUNIT Native Web automation");
29-
capabilities.setCapability("name", "Java JUnit iOS");
30-
capabilities.setCapability("platformName", "ios");
31-
capabilities.setCapability("deviceName", "iPhone .*");
32-
capabilities.setCapability("isRealMobile", true);
33-
capabilities.setCapability("platformVersion", "15");
34-
capabilities.setCapability("console", true);
35-
capabilities.setCapability("network", false);
36-
capabilities.setCapability("visual", true);
31+
ltOptions.put("build", "JUNIT Native Web automation");
32+
ltOptions.put("name", "Java JUnit iOS");
33+
ltOptions.put("platformName", "ios");
34+
ltOptions.put("deviceName", "iPhone .*");
35+
ltOptions.put("isRealMobile", true);
36+
ltOptions.put("platformVersion", "18");
37+
ltOptions.put("console", true);
38+
ltOptions.put("network", false);
39+
ltOptions.put("visual", true);
40+
capabilities.setCapability("lt:options", ltOptions);
3741

3842
driver = new RemoteWebDriver(new URL("https://" + username + ":" + accessKey + "@" + grid_url + "/wd/hub"),
3943
capabilities);
@@ -45,7 +49,7 @@ public void testSimple() throws Exception {
4549
driver.manage().timeouts().setScriptTimeout(10, TimeUnit.SECONDS);
4650
driver.get("https://mfml.in/api/getInfo");
4751
driver.getWindowHandles().forEach(handle -> System.out.println(handle));
48-
WebDriverWait wait = new WebDriverWait(driver, 30);
52+
WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(30));
4953
wait.until(ExpectedConditions.elementToBeClickable(By.id("resolution"))).click();
5054
wait.until(ExpectedConditions.elementToBeClickable(By.id("location"))).click();
5155
wait.until(ExpectedConditions.elementToBeClickable(By.id("details"))).click();

0 commit comments

Comments
 (0)