import io.appium.java_client.AppiumDriver; import io.appium.java_client.ios.IOSDriver; import java.net.MalformedURLException; import java.net.URL; import org.junit.Test; import org.openqa.selenium.By; import org.openqa.selenium.remote.DesiredCapabilities; import org.openqa.selenium.support.ui.ExpectedConditions; import org.openqa.selenium.support.ui.WebDriverWait; public class Edition036_NativeWebTap { private static By link = By.id("noClickLink"); // This test will fail without nativeWebTap @Test public void testClickLink_iOS_withoutNativeWebTap() throws MalformedURLException { DesiredCapabilities capabilities = new DesiredCapabilities(); capabilities.setCapability("platformName", "iOS"); capabilities.setCapability("platformVersion", "11.4"); capabilities.setCapability("deviceName", "iPhone 8"); capabilities.setCapability("browserName", "Safari"); IOSDriver driver = new IOSDriver<>(new URL("http://localhost:4723/wd/hub"), capabilities); actualTest(driver); } // This test will pass with nativeWebTap @Test public void testClickLink_iOS_withNativeWebTap() throws MalformedURLException { DesiredCapabilities capabilities = new DesiredCapabilities(); capabilities.setCapability("platformName", "iOS"); capabilities.setCapability("platformVersion", "11.4"); capabilities.setCapability("deviceName", "iPhone 8"); capabilities.setCapability("browserName", "Safari"); capabilities.setCapability("nativeWebTap", true); IOSDriver driver = new IOSDriver<>(new URL("http://localhost:4723/wd/hub"), capabilities); actualTest(driver); } public void actualTest(AppiumDriver driver) { WebDriverWait wait = new WebDriverWait(driver, 10); try { driver.get("https://appiumpro.com/test"); // click the link wait.until(ExpectedConditions.presenceOfElementLocated(link)).click(); // assert we navigated as expected wait.until(ExpectedConditions.urlToBe("https://appiumpro.com/")); } finally { driver.quit(); } } }