How do I handle permission pop-ups in Java JUnit with Appium on LambdaTest?
Hey Ian!
While performing Java Appium testing with JUnit on LambdaTest, you may come across scenario where you want to automatically handle permission pop-ups. You can choose to either accept all permission pop-ups or dismiss all of them.
Below is an example that demonstrates how to handle permission pop-ups -
package com.lambdatest;
import io.appium.java_client.MobileBy;
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.MalformedURLException;
import java.net.URL;
public class android {
String username = System.getenv("LT_USERNAME") == null ? "LT_USERNAME" //Enter the Username here
: System.getenv("LT_USERNAME");
String accessKey = System.getenv("LT_ACCESS_KEY") == null ? "LT_ACCESS_KEY" //Enter the Access key here
: System.getenv("LT_ACCESS_KEY");
public static RemoteWebDriver driver = null;
public String gridURL = "@mobile-hub.lambdatest.com/wd/hub";
public String status = "passed";
@Before
public void setUp() throws Exception {
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("build", "JUNIT Native App automation");
capabilities.setCapability("name", "Java JUnit Android Pixel 6");
capabilities.setCapability("platformName", "android");
capabilities.setCapability("deviceName", "Pixel 6"); //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("console",true);
capabilities.setCapability("network",true);
capabilities.setCapability("visual",true);
//GRANT PERMISSIONS FOR ANDROID
capabilities.setCapability("autoGrantPermissions", true);
//ACCEPT ALERTS FOR IOS
capabilities.setCapability("autoAcceptAlerts", true);
//DISMISS ALERTS FOR IOS
capabilities.setCapability("autoDismissAlerts", false);
try
{
driver = new RemoteWebDriver(new URL("https://" + username + ":" + accessKey + gridURL), capabilities);
}
catch (MalformedURLException e)
{
System.out.println("Invalid grid URL");
} catch (Exception e)
{
System.out.println(e.getMessage());
}
}
@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);
driver.navigate().back();
wait.until(ExpectedConditions.elementToBeClickable(MobileBy.id("Text"))).click();
wait.until(ExpectedConditions.elementToBeClickable(MobileBy.id("toast"))).click();
status="passed";
}
catch (Exception e)
{
System.out.println(e.getMessage());
status="failed";
}
}
@After
public void tearDown() throws Exception
{
if (driver != null)
{
driver.executeScript("lambda-status=" + status);
driver.quit();
}
}
}
You can also refer to the following GitHub repo for the same -