diff --git a/sample-code/examples/java/junit/src/test/java/com/saucelabs/appium/AndroidContactsTest.java b/sample-code/examples/java/junit/src/test/java/com/saucelabs/appium/AndroidContactsTest.java new file mode 100644 index 000000000..e990bb14c --- /dev/null +++ b/sample-code/examples/java/junit/src/test/java/com/saucelabs/appium/AndroidContactsTest.java @@ -0,0 +1,62 @@ +package com.saucelabs.appium; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.openqa.selenium.*; +import org.openqa.selenium.remote.CapabilityType; +import org.openqa.selenium.remote.DesiredCapabilities; +import org.openqa.selenium.remote.RemoteTouchScreen; +import org.openqa.selenium.remote.RemoteWebDriver; +import java.io.File; +import java.net.URL; +import java.util.List; + +public class AndroidContactsTest { + private WebDriver driver; + + @Before + public void setUp() throws Exception { + // set up appium + File classpathRoot = new File(System.getProperty("user.dir")); + File appDir = new File(classpathRoot, "../../../apps/ContactManager"); + File app = new File(appDir, "ContactManager.apk"); + DesiredCapabilities capabilities = new DesiredCapabilities(); + capabilities.setCapability("device","Android"); + capabilities.setCapability(CapabilityType.BROWSER_NAME, ""); + capabilities.setCapability(CapabilityType.VERSION, "4.2"); + capabilities.setCapability(CapabilityType.PLATFORM, "MAC"); + capabilities.setCapability("app", app.getAbsolutePath()); + capabilities.setCapability("app-package", "com.example.android.contactmanager"); + capabilities.setCapability("app-activity", ".ContactManager"); + driver = new SwipeableWebDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities); + } + + @After + public void tearDown() throws Exception { + driver.quit(); + } + + @Test + public void addContact(){ + WebElement el = driver.findElement(By.name("Add Contact")); + el.click(); + List textFieldsList = driver.findElements(By.tagName("textfield")); + textFieldsList.get(0).sendKeys("Some Name"); + textFieldsList.get(2).sendKeys("Some@example.com"); + driver.findElement(By.name("Save")).click(); + } + + public class SwipeableWebDriver extends RemoteWebDriver implements HasTouchScreen { + private RemoteTouchScreen touch; + + public SwipeableWebDriver(URL remoteAddress, Capabilities desiredCapabilities) { + super(remoteAddress, desiredCapabilities); + touch = new RemoteTouchScreen(getExecuteMethod()); + } + + public TouchScreen getTouch() { + return touch; + } + } +} diff --git a/sample-code/examples/java/junit/src/test/java/com/saucelabs/appium/AndroidTest.java b/sample-code/examples/java/junit/src/test/java/com/saucelabs/appium/AndroidTest.java new file mode 100644 index 000000000..b7273b831 --- /dev/null +++ b/sample-code/examples/java/junit/src/test/java/com/saucelabs/appium/AndroidTest.java @@ -0,0 +1,74 @@ +package com.saucelabs.appium; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.openqa.selenium.*; +import org.openqa.selenium.remote.CapabilityType; +import org.openqa.selenium.remote.DesiredCapabilities; +import org.openqa.selenium.remote.RemoteTouchScreen; +import org.openqa.selenium.remote.RemoteWebDriver; + +import java.io.File; +import java.net.URL; +import java.util.List; + +import static org.junit.Assert.assertEquals; + +public class AndroidTest { + + private WebDriver driver; + + @Before + public void setUp() throws Exception { + File classpathRoot = new File(System.getProperty("user.dir")); + File appDir = new File(classpathRoot, "../../../apps/ApiDemos/bin"); + File app = new File(appDir, "ApiDemos-debug.apk"); + DesiredCapabilities capabilities = new DesiredCapabilities(); + capabilities.setCapability("device","Android"); + capabilities.setCapability(CapabilityType.BROWSER_NAME, ""); + capabilities.setCapability(CapabilityType.VERSION, "4.2"); + capabilities.setCapability(CapabilityType.PLATFORM, "MAC"); + capabilities.setCapability("app", app.getAbsolutePath()); + capabilities.setCapability("app-package", "com.example.android.apis"); + capabilities.setCapability("app-activity", ".ApiDemos"); + driver = new SwipeableWebDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities); + } + + @After + public void tearDown() throws Exception { + driver.quit(); + } + + @Test + public void apiDemo(){ + WebElement el = driver.findElement(By.name("Animation")); + assertEquals(el.getText(), "Animation"); + el = driver.findElement(By.tagName("text")); + assertEquals(el.getText(), "API Demos"); + el = driver.findElement(By.name("App")); + el.click(); + List els = driver.findElements(By.tagName("text")); + assertEquals(els.get(2).getText(), "Activity"); + } + + public class SwipeableWebDriver extends RemoteWebDriver implements HasTouchScreen { + private RemoteTouchScreen touch; + + public SwipeableWebDriver(URL remoteAddress, Capabilities desiredCapabilities) { + super(remoteAddress, desiredCapabilities); + touch = new RemoteTouchScreen(getExecuteMethod()); + } + + public TouchScreen getTouch() { + return touch; + } + } + +} + + + + + + diff --git a/sample-code/examples/java/junit/src/test/java/com/saucelabs/appium/AndroidWebViewTest.java b/sample-code/examples/java/junit/src/test/java/com/saucelabs/appium/AndroidWebViewTest.java new file mode 100644 index 000000000..e93506ca1 --- /dev/null +++ b/sample-code/examples/java/junit/src/test/java/com/saucelabs/appium/AndroidWebViewTest.java @@ -0,0 +1,67 @@ +package com.saucelabs.appium; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.openqa.selenium.*; +import org.openqa.selenium.remote.DesiredCapabilities; +import org.openqa.selenium.remote.RemoteTouchScreen; +import org.openqa.selenium.remote.RemoteWebDriver; +import java.io.File; +import java.net.URL; + +public class AndroidWebViewTest { + private WebDriver driver; + + @Before + public void setUp() throws Exception { + // set up appium + File classpathRoot = new File(System.getProperty("user.dir")); + File appDir = new File(classpathRoot, "../../../apps/WebViewDemo/target"); + String file = getApkFile(appDir); + File app = new File(appDir, file); + DesiredCapabilities capabilities = new DesiredCapabilities(); + capabilities.setCapability("device","selendroid"); + capabilities.setCapability("app", app.getAbsolutePath()); + capabilities.setCapability("app-package", "io.selendroid.testapp"); + capabilities.setCapability("app-activity", ".HomeScreenActivity"); + driver = new SwipeableWebDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities); + } + private String getApkFile(File appDir) { + + for(String s : appDir.list()) + if(s.contains(".apk")){ + return s; + } + return ""; + } + @After + public void tearDown() throws Exception { + driver.quit(); + } + + @Test + public void webView(){ + WebElement button = driver.findElement(By.id("buttonStartWebview")); + button.click(); + driver.switchTo().window("WEBVIEW"); + WebElement inputField = driver.findElement(By.id("name_input")); + inputField.sendKeys("Some name"); + inputField.submit(); + } + + + public class SwipeableWebDriver extends RemoteWebDriver implements HasTouchScreen { + private RemoteTouchScreen touch; + + public SwipeableWebDriver(URL remoteAddress, Capabilities desiredCapabilities) { + super(remoteAddress, desiredCapabilities); + touch = new RemoteTouchScreen(getExecuteMethod()); + } + + public TouchScreen getTouch() { + return touch; + } + } + +} diff --git a/sample-code/examples/java/testng/pom.xml b/sample-code/examples/java/testng/pom.xml index 977a86f5d..c4ee93900 100644 --- a/sample-code/examples/java/testng/pom.xml +++ b/sample-code/examples/java/testng/pom.xml @@ -6,32 +6,38 @@ sauce_appium_testng 0.0.1-SNAPSHOT sauce_appium_testng - Sample Appium tests using JUnit + Sample Appium tests using TestNG org.testng testng 6.8 - test + org.seleniumhq.selenium selenium-java LATEST - test + com.googlecode.json-simple json-simple 1.1 - test + commons-lang commons-lang 2.6 - test + + + log4j + log4j + 1.2.16 + + diff --git a/sample-code/examples/java/testng/src/test/java/com/saucelabs/appium/AndroidContactsTest.java b/sample-code/examples/java/testng/src/test/java/com/saucelabs/appium/AndroidContactsTest.java new file mode 100644 index 000000000..d72f08bbb --- /dev/null +++ b/sample-code/examples/java/testng/src/test/java/com/saucelabs/appium/AndroidContactsTest.java @@ -0,0 +1,66 @@ +package com.saucelabs.appium; + +import org.openqa.selenium.*; +import org.openqa.selenium.remote.CapabilityType; +import org.openqa.selenium.remote.DesiredCapabilities; +import org.openqa.selenium.remote.RemoteTouchScreen; +import org.openqa.selenium.remote.RemoteWebDriver; +import org.testng.annotations.AfterMethod; +import org.testng.annotations.BeforeMethod; +import org.testng.annotations.Test; +import java.io.File; +import java.net.URL; +import java.util.List; + + +public class AndroidContactsTest { + private WebDriver driver; + + @BeforeMethod + public void setUp() throws Exception { + // set up appium + File classpathRoot = new File(System.getProperty("user.dir")); + File appDir = new File(classpathRoot, "../../../apps/ContactManager"); + File app = new File(appDir, "ContactManager.apk"); + DesiredCapabilities capabilities = new DesiredCapabilities(); + capabilities.setCapability("device","Android"); + capabilities.setCapability(CapabilityType.BROWSER_NAME, ""); + capabilities.setCapability(CapabilityType.VERSION, "4.2"); + capabilities.setCapability(CapabilityType.PLATFORM, "MAC"); + capabilities.setCapability("app", app.getAbsolutePath()); + capabilities.setCapability("app-package", "com.example.android.contactmanager"); + capabilities.setCapability("app-activity", ".ContactManager"); + driver = new SwipeableWebDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities); + } + + @AfterMethod + public void tearDown() throws Exception { + driver.quit(); + } + + @Test + public void addContact(){ + WebElement el = driver.findElement(By.name("Add Contact")); + el.click(); + List textFieldsList = driver.findElements(By.tagName("textfield")); + textFieldsList.get(0).sendKeys("Some Name"); + textFieldsList.get(2).sendKeys("Some@example.com"); + driver.findElement(By.name("Save")).click(); + } + + public class SwipeableWebDriver extends RemoteWebDriver implements HasTouchScreen { + private RemoteTouchScreen touch; + + public SwipeableWebDriver(URL remoteAddress, Capabilities desiredCapabilities) { + super(remoteAddress, desiredCapabilities); + touch = new RemoteTouchScreen(getExecuteMethod()); + } + + public TouchScreen getTouch() { + return touch; + } + } + + +} + diff --git a/sample-code/examples/java/testng/src/test/java/com/saucelabs/appium/AndroidTest.java b/sample-code/examples/java/testng/src/test/java/com/saucelabs/appium/AndroidTest.java new file mode 100644 index 000000000..1b4ff2efc --- /dev/null +++ b/sample-code/examples/java/testng/src/test/java/com/saucelabs/appium/AndroidTest.java @@ -0,0 +1,67 @@ +package com.saucelabs.appium; + +import junit.framework.Assert; +import org.openqa.selenium.*; +import org.openqa.selenium.remote.CapabilityType; +import org.openqa.selenium.remote.DesiredCapabilities; +import org.openqa.selenium.remote.RemoteTouchScreen; +import org.openqa.selenium.remote.RemoteWebDriver; +import org.testng.annotations.AfterMethod; +import org.testng.annotations.BeforeMethod; +import org.testng.annotations.Test; +import java.io.File; +import java.net.URL; +import java.util.List; + +public class AndroidTest { + private WebDriver driver; + + @BeforeMethod + public void setUp() throws Exception { + // set up appium + File classpathRoot = new File(System.getProperty("user.dir")); + File appDir = new File(classpathRoot, "../../../apps/ApiDemos/bin"); + File app = new File(appDir, "ApiDemos-debug.apk"); + DesiredCapabilities capabilities = new DesiredCapabilities(); + capabilities.setCapability("device","Android"); + capabilities.setCapability(CapabilityType.BROWSER_NAME, ""); + capabilities.setCapability(CapabilityType.VERSION, "4.2"); + capabilities.setCapability(CapabilityType.PLATFORM, "MAC"); + capabilities.setCapability("app", app.getAbsolutePath()); + capabilities.setCapability("app-package", "com.example.android.apis"); + capabilities.setCapability("app-activity", ".ApiDemos"); + driver = new SwipeableWebDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities); + } + + @AfterMethod + public void tearDown() throws Exception { + driver.quit(); + } + + @Test + public void apiDemo(){ + WebElement el = driver.findElement(By.name("Animation")); + Assert.assertEquals(el.getText(),"Animation"); + el = driver.findElement(By.tagName("text")); + Assert.assertEquals(el.getText(), "API Demos"); + el = driver.findElement(By.name("App")); + el.click(); + List els = driver.findElements(By.tagName("text")); + Assert.assertEquals(els.get(2).getText(),"Activity"); + } + + public class SwipeableWebDriver extends RemoteWebDriver implements HasTouchScreen { + private RemoteTouchScreen touch; + + public SwipeableWebDriver(URL remoteAddress, Capabilities desiredCapabilities) { + super(remoteAddress, desiredCapabilities); + touch = new RemoteTouchScreen(getExecuteMethod()); + } + + public TouchScreen getTouch() { + return touch; + } + } + +} + diff --git a/sample-code/examples/java/testng/src/test/java/com/saucelabs/appium/AndroidWebViewTest.java b/sample-code/examples/java/testng/src/test/java/com/saucelabs/appium/AndroidWebViewTest.java new file mode 100644 index 000000000..1750ce5c4 --- /dev/null +++ b/sample-code/examples/java/testng/src/test/java/com/saucelabs/appium/AndroidWebViewTest.java @@ -0,0 +1,69 @@ +package com.saucelabs.appium; + +import org.openqa.selenium.*; +import org.openqa.selenium.remote.DesiredCapabilities; +import org.openqa.selenium.remote.RemoteTouchScreen; +import org.openqa.selenium.remote.RemoteWebDriver; +import org.testng.annotations.AfterMethod; +import org.testng.annotations.BeforeMethod; +import org.testng.annotations.Test; +import java.io.File; +import java.net.URL; + +public class AndroidWebViewTest { + + private WebDriver driver; + + @BeforeMethod + public void setUp() throws Exception { + // set up appium + File classpathRoot = new File(System.getProperty("user.dir")); + File appDir = new File(classpathRoot, "../../../apps/WebViewDemo/target"); + String file = getApkFile(appDir); + File app = new File(appDir, file); + DesiredCapabilities capabilities = new DesiredCapabilities(); + capabilities.setCapability("device","selendroid"); + capabilities.setCapability("app", app.getAbsolutePath()); + capabilities.setCapability("app-package", "io.selendroid.testapp"); + capabilities.setCapability("app-activity", ".HomeScreenActivity"); + driver = new SwipeableWebDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities); + } + + private String getApkFile(File appDir) { + + for(String s : appDir.list()) + if(s.contains(".apk")){ + return s; + } + return ""; + } + + @AfterMethod + public void tearDown() throws Exception { + driver.quit(); + } + + @Test + public void webView(){ + WebElement button = driver.findElement(By.id("buttonStartWebview")); + button.click(); + driver.switchTo().window("WEBVIEW"); + WebElement inputField = driver.findElement(By.id("name_input")); + inputField.sendKeys("Some name"); + inputField.submit(); + } + + public class SwipeableWebDriver extends RemoteWebDriver implements HasTouchScreen { + private RemoteTouchScreen touch; + + public SwipeableWebDriver(URL remoteAddress, Capabilities desiredCapabilities) { + super(remoteAddress, desiredCapabilities); + touch = new RemoteTouchScreen(getExecuteMethod()); + } + + public TouchScreen getTouch() { + return touch; + } + } + +}