diff --git a/.idea/misc.xml b/.idea/misc.xml index e24323e..254ce4d 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,4 +1,3 @@ - diff --git a/azure-pipelines.yml b/azure-pipelines.yml new file mode 100644 index 0000000..67e8be4 --- /dev/null +++ b/azure-pipelines.yml @@ -0,0 +1,33 @@ +trigger: + branches: + include: + - main + - master + - fix/appium-tests # Add any other branches you want to trigger the pipeline + +pool: + name: 'Default' + +# ============================== +# Variable Group +# ============================== +variables: + - group: LambdaTest-Credentials # Assuming you have a variable group for credentials + +# ============================== +# Steps +# ============================== +steps: + + # Checkout the repo to get the latest changes + - checkout: self + clean: true + + # Run Android tests with the 'android' profile + - script: | + echo Running Android Tests with Appium + mvn test -P androidWeb + displayName: 'Run AndroidWeb Tests' + env: + LT_USERNAME: $(LT_USERNAME) # LambdaTest username (securely injected from variable group) + LT_ACCESS_KEY: $(LT_ACCESS_KEY) # LambdaTest access key (securely injected from variable group) diff --git a/pom.xml b/pom.xml index 95ddfb1..43f5a96 100644 --- a/pom.xml +++ b/pom.xml @@ -43,7 +43,7 @@ io.appium java-client - 7.6.0 + 8.6.0 test diff --git a/src/test/java/com/lambdatest/android.java b/src/test/java/com/lambdatest/android.java index 10f6065..3ede513 100644 --- a/src/test/java/com/lambdatest/android.java +++ b/src/test/java/com/lambdatest/android.java @@ -1,68 +1,88 @@ package com.lambdatest; -import io.appium.java_client.MobileBy; +import io.appium.java_client.AppiumBy; +import io.appium.java_client.android.AndroidDriver; import org.junit.After; import org.junit.Before; import org.junit.Test; -import org.openqa.selenium.remote.DesiredCapabilities; -import org.openqa.selenium.remote.RemoteWebDriver; import org.openqa.selenium.By; - +import org.openqa.selenium.WebElement; +import org.openqa.selenium.remote.DesiredCapabilities; import org.openqa.selenium.support.ui.ExpectedConditions; import org.openqa.selenium.support.ui.WebDriverWait; import java.net.URL; +import java.time.Duration; +import java.util.HashMap; public class android { - String username = System.getenv("LT_USERNAME") == null ? "LT_USERNAME" : System.getenv("LT_USERNAME"); //Enter the Username here - String accessKey = System.getenv("LT_ACCESS_KEY") == null ? "LT_ACCESS_KEY" : System.getenv("LT_ACCESS_KEY"); //Enter the Access key here - 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 - public String grid_url = System.getenv("LT_GRID_URL") == null ? "mobile-hub.lambdatest.com" : System.getenv("LT_GRID_URL"); + String username = System.getenv("LT_USERNAME") == null ? "YOUR_USERNAME" : System.getenv("LT_USERNAME"); + String accessKey = System.getenv("LT_ACCESS_KEY") == null ? "YOUR_ACCESS_KEY" : System.getenv("LT_ACCESS_KEY"); public String status = "passed"; - public static RemoteWebDriver driver = null; + // Fix 1: Use AndroidDriver instead of RemoteWebDriver + public static AndroidDriver driver = null; @Before public void setUp() throws Exception { DesiredCapabilities capabilities = new DesiredCapabilities(); - capabilities.setCapability("build", "JUNIT Native App automation"); - capabilities.setCapability("name", "Java JUnit Android"); - capabilities.setCapability("platformName", "android"); - capabilities.setCapability("deviceName", "Pixel.*"); //Enter the name of the device here - capabilities.setCapability("isRealMobile", true); - capabilities.setCapability("platformVersion", "12"); - capabilities.setCapability("app", app_id); //Enter the App ID here - capabilities.setCapability("deviceOrientation", "PORTRAIT"); - capabilities.setCapability("network", false); - capabilities.setCapability("visual", true); - capabilities.setCapability("autoGrantPermissions", true); - - driver = new RemoteWebDriver(new URL("https://" + username + ":" + accessKey + "@" + grid_url + "/wd/hub"), + // Fix 2: Use lt:options for W3C compliance + HashMap ltOptions = new HashMap(); + ltOptions.put("w3c", true); + ltOptions.put("platformName", "android"); + ltOptions.put("deviceName", "Pixel.*"); + ltOptions.put("platformVersion", "12"); + ltOptions.put("isRealMobile", true); + ltOptions.put("app", "lt://APP10160622431766424164986229"); + ltOptions.put("build", "JUNIT Native App automation"); + ltOptions.put("name", "Java JUnit Android"); + ltOptions.put("visual", true); + ltOptions.put("console", true); + ltOptions.put("autoGrantPermissions", true); + + capabilities.setCapability("lt:options", ltOptions); + + driver = new AndroidDriver( + new URL("https://" + username + ":" + accessKey + "@mobile-hub.lambdatest.com/wd/hub"), capabilities); } @Test public void testSimple() throws Exception { try { - WebDriverWait wait = new WebDriverWait(driver, 30); - wait.until(ExpectedConditions.elementToBeClickable(MobileBy.id("color"))).click(); - wait.until(ExpectedConditions.elementToBeClickable(MobileBy.id("geoLocation"))).click(); - Thread.sleep(5000); + // Fix 3: Use Duration for WebDriverWait in Selenium 4 + WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(30)); + + // Fix 4: Use AppiumBy instead of MobileBy + wait.until(ExpectedConditions.elementToBeClickable(AppiumBy.id("color"))).click(); + wait.until(ExpectedConditions.elementToBeClickable(AppiumBy.id("geoLocation"))).click(); + + Thread.sleep(2000); + + // Fix 5: Proper Mobile Back Navigation driver.navigate().back(); - wait.until(ExpectedConditions.elementToBeClickable(MobileBy.id("Text"))).click(); - wait.until(ExpectedConditions.elementToBeClickable(MobileBy.id("notification"))).click(); - wait.until(ExpectedConditions.elementToBeClickable(MobileBy.id("toast"))).click(); - wait.until(ExpectedConditions.elementToBeClickable(By.id("webview"))).click(); - Thread.sleep(10000); - wait.until(ExpectedConditions.elementToBeClickable(MobileBy.id("url"))).sendKeys("https://www.lambdatest.com/"); - wait.until(ExpectedConditions.elementToBeClickable(MobileBy.id("find"))).click(); - Thread.sleep(5000); + + wait.until(ExpectedConditions.elementToBeClickable(AppiumBy.id("Text"))).click(); + wait.until(ExpectedConditions.elementToBeClickable(AppiumBy.id("notification"))).click(); + wait.until(ExpectedConditions.elementToBeClickable(AppiumBy.id("toast"))).click(); + + // Interaction with WebView + wait.until(ExpectedConditions.elementToBeClickable(AppiumBy.id("webview"))).click(); + + WebElement urlField = wait.until(ExpectedConditions.elementToBeClickable(AppiumBy.id("url"))); + urlField.sendKeys("https://www.lambdatest.com/"); + + driver.findElement(AppiumBy.id("find")).click(); + + Thread.sleep(2000); driver.navigate().back(); + status = "passed"; } catch (Exception e) { - System.out.println(e.getMessage()); + System.out.println("Test Error: " + e.getMessage()); status = "failed"; + throw e; } } @@ -73,5 +93,4 @@ public void tearDown() throws Exception { driver.quit(); } } -} - +} \ No newline at end of file diff --git a/src/test/java/com/lambdatest/androidWeb.java b/src/test/java/com/lambdatest/androidWeb.java index 76e8fc0..587928a 100644 --- a/src/test/java/com/lambdatest/androidWeb.java +++ b/src/test/java/com/lambdatest/androidWeb.java @@ -4,12 +4,15 @@ import org.junit.Before; import org.junit.Test; import org.openqa.selenium.By; +import org.openqa.selenium.chrome.ChromeOptions; import org.openqa.selenium.remote.DesiredCapabilities; import org.openqa.selenium.remote.RemoteWebDriver; import org.openqa.selenium.support.ui.ExpectedConditions; import org.openqa.selenium.support.ui.WebDriverWait; import java.net.URL; +import java.time.Duration; +import java.util.HashMap; import java.util.concurrent.TimeUnit; public class androidWeb { @@ -24,17 +27,22 @@ public class androidWeb { @Before public void setUp() throws Exception { DesiredCapabilities capabilities = new DesiredCapabilities(); + HashMap ltOptions = new HashMap(); + ltOptions.put("build", "JUNIT Native Web automation"); + ltOptions.put("name", "Java JUnit Android"); + ltOptions.put("platformName", "android"); + ltOptions.put("deviceName", "Pixel .*"); //Enter the name of the device here + ltOptions.put("isRealMobile", true); + ltOptions.put("platformVersion", "14"); + ltOptions.put("deviceOrientation", "PORTRAIT"); + ltOptions.put("console", true); + ltOptions.put("network", false); + ltOptions.put("visual", true); + ltOptions.put("browserName", "chrome"); + ltOptions.put("autoGrantPermissions", true); + capabilities.setCapability("lt:options", ltOptions); + - capabilities.setCapability("build", "JUNIT Native Web automation"); - capabilities.setCapability("name", "Java JUnit Android"); - capabilities.setCapability("platformName", "android"); - capabilities.setCapability("deviceName", "Pixel .*"); //Enter the name of the device here - capabilities.setCapability("isRealMobile", true); - capabilities.setCapability("platformVersion", "12"); - capabilities.setCapability("deviceOrientation", "PORTRAIT"); - capabilities.setCapability("console", true); - capabilities.setCapability("network", false); - capabilities.setCapability("visual", true); driver = new RemoteWebDriver(new URL("https://" + username + ":" + accessKey + "@" + grid_url + "/wd/hub"), capabilities); @@ -46,7 +54,7 @@ public void testSimple() throws Exception { driver.manage().timeouts().setScriptTimeout(10, TimeUnit.SECONDS); driver.get("https://mfml.in/api/getInfo"); driver.getWindowHandles().forEach(handle -> System.out.println(handle)); - WebDriverWait wait = new WebDriverWait(driver, 30); + WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(30)); wait.until(ExpectedConditions.elementToBeClickable(By.id("resolution"))).click(); wait.until(ExpectedConditions.elementToBeClickable(By.id("location"))).click(); wait.until(ExpectedConditions.elementToBeClickable(By.id("details"))).click(); diff --git a/src/test/java/com/lambdatest/ios.java b/src/test/java/com/lambdatest/ios.java index c96d810..d211fe1 100644 --- a/src/test/java/com/lambdatest/ios.java +++ b/src/test/java/com/lambdatest/ios.java @@ -1,67 +1,88 @@ package com.lambdatest; -import io.appium.java_client.MobileBy; +// Use Appium-specific imports +import io.appium.java_client.AppiumBy; +import io.appium.java_client.ios.IOSDriver; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.openqa.selenium.remote.DesiredCapabilities; -import org.openqa.selenium.remote.RemoteWebDriver; -import org.openqa.selenium.By; - import org.openqa.selenium.support.ui.ExpectedConditions; import org.openqa.selenium.support.ui.WebDriverWait; import java.net.URL; +import java.time.Duration; +import java.util.HashMap; public class ios { - String username = System.getenv("LT_USERNAME") == null ? "LT_USERNAME" : System.getenv("LT_USERNAME"); //Enter the Username here - String accessKey = System.getenv("LT_ACCESS_KEY") == null ? "LT_ACCESS_KEY" : System.getenv("LT_ACCESS_KEY"); //Enter the Access key here - 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 - public String grid_url = System.getenv("LT_GRID_URL") == null ? "mobile-hub.lambdatest.com" : System.getenv("LT_GRID_URL"); + String username = System.getenv("LT_USERNAME") == null ? "YOUR_USERNAME" : System.getenv("LT_USERNAME"); + String accessKey = System.getenv("LT_ACCESS_KEY") == null ? "YOUR_ACCESS_KEY" : System.getenv("LT_ACCESS_KEY"); + public String grid_url = "mobile-hub.lambdatest.com"; public String status = "passed"; - public static RemoteWebDriver driver = null; - + // FIX 1: Use IOSDriver instead of RemoteWebDriver + public static IOSDriver driver = null; @Before public void setUp() throws Exception { DesiredCapabilities capabilities = new DesiredCapabilities(); + HashMap ltOptions = new HashMap(); + + ltOptions.put("build", "JUNIT Native App automation"); + ltOptions.put("name", "Java JUnit iOS"); + ltOptions.put("platformName", "ios"); + ltOptions.put("deviceName", "iPhone.*"); + ltOptions.put("isRealMobile", true); + ltOptions.put("platformVersion", "18"); + ltOptions.put("app", "lt://APP1016018631760361477812757"); + ltOptions.put("network", false); + ltOptions.put("visual", true); + ltOptions.put("w3c", true); // Ensure W3C is enabled + + capabilities.setCapability("lt:options", ltOptions); - capabilities.setCapability("build", "JUNIT Native App automation"); - capabilities.setCapability("name", "Java JUnit iOS"); - capabilities.setCapability("platformName", "ios"); - capabilities.setCapability("deviceName", "iPhone.*"); - capabilities.setCapability("isRealMobile", true); - capabilities.setCapability("platformVersion", "15"); - capabilities.setCapability("app", app_id); //Enter the APP_ID here - capabilities.setCapability("network", false); - capabilities.setCapability("visual", true); - - driver = new RemoteWebDriver(new URL("https://" + username + ":" + accessKey + "@" + grid_url + "/wd/hub"), + // FIX 2: Initialize as IOSDriver + driver = new IOSDriver(new URL("https://" + username + ":" + accessKey + "@" + grid_url + "/wd/hub"), capabilities); } @Test public void testSimple() throws Exception { try { - WebDriverWait wait = new WebDriverWait(driver, 30); - wait.until(ExpectedConditions.elementToBeClickable(MobileBy.id("color"))).click(); - wait.until(ExpectedConditions.elementToBeClickable(MobileBy.id("geoLocation"))).click(); + WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(30)); + + // FIX 3: Use AppiumBy instead of MobileBy + wait.until(ExpectedConditions.elementToBeClickable(AppiumBy.id("color"))).click(); + wait.until(ExpectedConditions.elementToBeClickable(AppiumBy.id("geoLocation"))).click(); + + Thread.sleep(2000); + + // FIX 4: iOS navigate().back() is often not supported. + // If this fails, you must click the 'Back' button element in your UI instead. + try { + driver.navigate().back(); + } catch (Exception e) { + System.out.println("Standard back not supported, skipping or use element click."); + } + + wait.until(ExpectedConditions.elementToBeClickable(AppiumBy.id("Text"))).click(); + wait.until(ExpectedConditions.elementToBeClickable(AppiumBy.id("notification"))).click(); + wait.until(ExpectedConditions.elementToBeClickable(AppiumBy.id("toast"))).click(); + + // Navigate to Browser/WebView + wait.until(ExpectedConditions.elementToBeClickable(AppiumBy.accessibilityId("Browser"))).click(); Thread.sleep(5000); - driver.navigate().back(); - wait.until(ExpectedConditions.elementToBeClickable(MobileBy.id("Text"))).click(); - wait.until(ExpectedConditions.elementToBeClickable(MobileBy.id("notification"))).click(); - wait.until(ExpectedConditions.elementToBeClickable(MobileBy.id("toast"))).click(); - wait.until(ExpectedConditions.elementToBeClickable(By.id("Browser"))).click(); - Thread.sleep(10000); - wait.until(ExpectedConditions.elementToBeClickable(MobileBy.id("url"))).sendKeys("https://www.lambdatest.com/"); - wait.until(ExpectedConditions.elementToBeClickable(MobileBy.id("find"))).click(); + + wait.until(ExpectedConditions.elementToBeClickable(AppiumBy.id("url"))).sendKeys("https://www.lambdatest.com/"); + wait.until(ExpectedConditions.elementToBeClickable(AppiumBy.id("find"))).click(); + Thread.sleep(5000); + // navigate back to app driver.navigate().back(); status = "passed"; } catch (Exception e) { - System.out.println(e.getMessage()); + System.out.println("Test failed: " + e.getMessage()); status = "failed"; } } @@ -69,9 +90,9 @@ public void testSimple() throws Exception { @After public void tearDown() throws Exception { if (driver != null) { + // FIX 5: Use the correct LambdaTest status hook for Appium 2.x driver.executeScript("lambda-status=" + status); driver.quit(); } } -} - +} \ No newline at end of file diff --git a/src/test/java/com/lambdatest/iosWeb.java b/src/test/java/com/lambdatest/iosWeb.java index c442b2a..11a86d2 100644 --- a/src/test/java/com/lambdatest/iosWeb.java +++ b/src/test/java/com/lambdatest/iosWeb.java @@ -10,6 +10,8 @@ import org.openqa.selenium.support.ui.WebDriverWait; import java.net.URL; +import java.time.Duration; +import java.util.HashMap; import java.util.concurrent.TimeUnit; public class iosWeb { @@ -24,16 +26,18 @@ public class iosWeb { @Before public void setUp() throws Exception { DesiredCapabilities capabilities = new DesiredCapabilities(); + HashMap ltOptions = new HashMap(); - capabilities.setCapability("build", "JUNIT Native Web automation"); - capabilities.setCapability("name", "Java JUnit iOS"); - capabilities.setCapability("platformName", "ios"); - capabilities.setCapability("deviceName", "iPhone .*"); - capabilities.setCapability("isRealMobile", true); - capabilities.setCapability("platformVersion", "15"); - capabilities.setCapability("console", true); - capabilities.setCapability("network", false); - capabilities.setCapability("visual", true); + ltOptions.put("build", "JUNIT Native Web automation"); + ltOptions.put("name", "Java JUnit iOS"); + ltOptions.put("platformName", "ios"); + ltOptions.put("deviceName", "iPhone .*"); + ltOptions.put("isRealMobile", true); + ltOptions.put("platformVersion", "18"); + ltOptions.put("console", true); + ltOptions.put("network", false); + ltOptions.put("visual", true); + capabilities.setCapability("lt:options", ltOptions); driver = new RemoteWebDriver(new URL("https://" + username + ":" + accessKey + "@" + grid_url + "/wd/hub"), capabilities); @@ -45,7 +49,7 @@ public void testSimple() throws Exception { driver.manage().timeouts().setScriptTimeout(10, TimeUnit.SECONDS); driver.get("https://mfml.in/api/getInfo"); driver.getWindowHandles().forEach(handle -> System.out.println(handle)); - WebDriverWait wait = new WebDriverWait(driver, 30); + WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(30)); wait.until(ExpectedConditions.elementToBeClickable(By.id("resolution"))).click(); wait.until(ExpectedConditions.elementToBeClickable(By.id("location"))).click(); wait.until(ExpectedConditions.elementToBeClickable(By.id("details"))).click(); diff --git a/src/test/java/com/lambdatest/ltOptions_w3c/androidWeb_ltOptions_w3c.java b/src/test/java/com/lambdatest/ltOptions_w3c/androidWeb_ltOptions_w3c.java index f13758a..bbc1c41 100644 --- a/src/test/java/com/lambdatest/ltOptions_w3c/androidWeb_ltOptions_w3c.java +++ b/src/test/java/com/lambdatest/ltOptions_w3c/androidWeb_ltOptions_w3c.java @@ -10,6 +10,7 @@ import org.openqa.selenium.support.ui.WebDriverWait; import java.net.URL; +import java.time.Duration; import java.util.HashMap; import java.util.concurrent.TimeUnit; @@ -50,7 +51,7 @@ public void testSimple() throws Exception { driver.manage().timeouts().setScriptTimeout(10, TimeUnit.SECONDS); driver.get("https://mfml.in/api/getInfo"); driver.getWindowHandles().forEach(handle -> System.out.println(handle)); - WebDriverWait wait = new WebDriverWait(driver, 30); + WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(30)); wait.until(ExpectedConditions.elementToBeClickable(By.id("resolution"))).click(); wait.until(ExpectedConditions.elementToBeClickable(By.id("location"))).click(); wait.until(ExpectedConditions.elementToBeClickable(By.id("details"))).click(); diff --git a/src/test/java/com/lambdatest/ltOptions_w3c/android_ltOptions_w3c.java b/src/test/java/com/lambdatest/ltOptions_w3c/android_ltOptions_w3c.java index a6b7501..513788f 100644 --- a/src/test/java/com/lambdatest/ltOptions_w3c/android_ltOptions_w3c.java +++ b/src/test/java/com/lambdatest/ltOptions_w3c/android_ltOptions_w3c.java @@ -1,27 +1,29 @@ package com.lambdatest.ltOptions_w3c; -import io.appium.java_client.MobileBy; +// 1. Updated imports +import io.appium.java_client.AppiumBy; +import io.appium.java_client.android.AndroidDriver; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.openqa.selenium.By; import org.openqa.selenium.remote.DesiredCapabilities; -import org.openqa.selenium.remote.RemoteWebDriver; import org.openqa.selenium.support.ui.ExpectedConditions; import org.openqa.selenium.support.ui.WebDriverWait; import java.net.URL; +import java.time.Duration; import java.util.HashMap; public class android_ltOptions_w3c { - String username = System.getenv("LT_USERNAME") == null ? "LT_USERNAME" : System.getenv("LT_USERNAME"); //Enter the Username here - String accessKey = System.getenv("LT_ACCESS_KEY") == null ? "LT_ACCESS_KEY" : System.getenv("LT_ACCESS_KEY"); //Enter the Access key here - 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 + String username = System.getenv("LT_USERNAME") == null ? "YOUR_USERNAME" : System.getenv("LT_USERNAME"); + String accessKey = System.getenv("LT_ACCESS_KEY") == null ? "YOUR_ACCESS_KEY" : System.getenv("LT_ACCESS_KEY"); + public String app_id = System.getenv("LT_APP_ID") == null ? "lt://APP10160622431766424164986229" : System.getenv("LT_APP_ID"); public String grid_url = System.getenv("LT_GRID_URL") == null ? "mobile-hub.lambdatest.com" : System.getenv("LT_GRID_URL"); public String status = "passed"; - public static RemoteWebDriver driver = null; - + // 2. Changed RemoteWebDriver to AndroidDriver + public static AndroidDriver driver = null; @Before public void setUp() throws Exception { @@ -33,9 +35,8 @@ public void setUp() throws Exception { ltOptions.put("network", false); ltOptions.put("visual", true); ltOptions.put("autoGrantPermissions", true); - ltOptions.put("enableCustomTranslation", true); ltOptions.put("platformName", "android"); - ltOptions.put("deviceName", ".*"); + ltOptions.put("deviceName", "Pixel.*"); ltOptions.put("platformVersion", "12"); ltOptions.put("app", app_id); ltOptions.put("deviceOrientation", "PORTRAIT"); @@ -44,29 +45,40 @@ public void setUp() throws Exception { ltOptions.put("isRealMobile", true); capabilities.setCapability("lt:options", ltOptions); - driver = new RemoteWebDriver(new URL("https://" + username + ":" + accessKey + "@" + grid_url + "/wd/hub"), capabilities); + // 3. Initialize using AndroidDriver + driver = new AndroidDriver(new URL("https://" + username + ":" + accessKey + "@" + grid_url + "/wd/hub"), capabilities); } @Test public void testSimple() throws Exception { try { - WebDriverWait wait = new WebDriverWait(driver, 30); - wait.until(ExpectedConditions.elementToBeClickable(MobileBy.id("color"))).click(); - wait.until(ExpectedConditions.elementToBeClickable(MobileBy.id("geoLocation"))).click(); + WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(30)); + + // 4. Using AppiumBy.id instead of MobileBy + wait.until(ExpectedConditions.elementToBeClickable(AppiumBy.id("color"))).click(); + wait.until(ExpectedConditions.elementToBeClickable(AppiumBy.id("geoLocation"))).click(); + Thread.sleep(5000); + + // This will now work because AndroidDriver knows how to handle "back" driver.navigate().back(); - wait.until(ExpectedConditions.elementToBeClickable(MobileBy.id("Text"))).click(); - wait.until(ExpectedConditions.elementToBeClickable(MobileBy.id("notification"))).click(); - wait.until(ExpectedConditions.elementToBeClickable(MobileBy.id("toast"))).click(); + + wait.until(ExpectedConditions.elementToBeClickable(AppiumBy.id("Text"))).click(); + wait.until(ExpectedConditions.elementToBeClickable(AppiumBy.id("notification"))).click(); + wait.until(ExpectedConditions.elementToBeClickable(AppiumBy.id("toast"))).click(); + wait.until(ExpectedConditions.elementToBeClickable(By.id("webview"))).click(); - Thread.sleep(10000); - wait.until(ExpectedConditions.elementToBeClickable(MobileBy.id("url"))).sendKeys("https://www.lambdatest.com/"); - wait.until(ExpectedConditions.elementToBeClickable(MobileBy.id("find"))).click(); + Thread.sleep(5000); + + wait.until(ExpectedConditions.elementToBeClickable(AppiumBy.id("url"))).sendKeys("https://www.lambdatest.com/"); + wait.until(ExpectedConditions.elementToBeClickable(AppiumBy.id("find"))).click(); + Thread.sleep(5000); driver.navigate().back(); + status = "passed"; } catch (Exception e) { - System.out.println(e.getMessage()); + System.out.println("Error found: " + e.getMessage()); status = "failed"; } } @@ -78,5 +90,4 @@ public void tearDown() throws Exception { driver.quit(); } } -} - +} \ No newline at end of file diff --git a/src/test/java/com/lambdatest/ltOptions_w3c/iosWeb_ltOptions_w3c.java b/src/test/java/com/lambdatest/ltOptions_w3c/iosWeb_ltOptions_w3c.java index 5d66b0a..97cd3c0 100644 --- a/src/test/java/com/lambdatest/ltOptions_w3c/iosWeb_ltOptions_w3c.java +++ b/src/test/java/com/lambdatest/ltOptions_w3c/iosWeb_ltOptions_w3c.java @@ -10,6 +10,7 @@ import org.openqa.selenium.support.ui.WebDriverWait; import java.net.URL; +import java.time.Duration; import java.util.HashMap; import java.util.concurrent.TimeUnit; @@ -50,7 +51,7 @@ public void testSimple() throws Exception { driver.manage().timeouts().setScriptTimeout(10, TimeUnit.SECONDS); driver.get("https://mfml.in/api/getInfo"); driver.getWindowHandles().forEach(handle -> System.out.println(handle)); - WebDriverWait wait = new WebDriverWait(driver, 30); + WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(30)); wait.until(ExpectedConditions.elementToBeClickable(By.id("resolution"))).click(); wait.until(ExpectedConditions.elementToBeClickable(By.id("location"))).click(); diff --git a/src/test/java/com/lambdatest/ltOptions_w3c/ios_ltOptions_w3c.java b/src/test/java/com/lambdatest/ltOptions_w3c/ios_ltOptions_w3c.java index 7ee1500..d5fbecb 100644 --- a/src/test/java/com/lambdatest/ltOptions_w3c/ios_ltOptions_w3c.java +++ b/src/test/java/com/lambdatest/ltOptions_w3c/ios_ltOptions_w3c.java @@ -11,6 +11,7 @@ import org.openqa.selenium.support.ui.WebDriverWait; import java.net.URL; +import java.time.Duration; import java.util.HashMap; public class ios_ltOptions_w3c { @@ -48,7 +49,7 @@ public void setUp() throws Exception { @Test public void testSimple() throws Exception { try { - WebDriverWait wait = new WebDriverWait(driver, 30); + WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(30)); wait.until(ExpectedConditions.elementToBeClickable(MobileBy.id("color"))).click(); wait.until(ExpectedConditions.elementToBeClickable(MobileBy.id("geoLocation"))).click(); Thread.sleep(5000);