mirror of
https://github.com/appium/appium.git
synced 2026-01-14 06:10:01 -06:00
Initial Java port of tests
This commit is contained in:
@@ -4,6 +4,7 @@
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>com.saucelabs</groupId>
|
||||
<artifactId>sauce_appium_junit</artifactId>
|
||||
<version>0.0.1-SNAPSHOT</version>
|
||||
<name>sauce_appium_junit</name>
|
||||
|
||||
<dependencies>
|
||||
@@ -19,6 +20,18 @@
|
||||
<version>LATEST</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.seleniumhq.selenium</groupId>
|
||||
<artifactId>selenium-java</artifactId>
|
||||
<version>LATEST</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.googlecode.json-simple</groupId>
|
||||
<artifactId>json-simple</artifactId>
|
||||
<version>1.1</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
|
||||
@@ -0,0 +1,79 @@
|
||||
package com.saucelabs.appium;
|
||||
|
||||
import org.junit.After;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.openqa.selenium.By;
|
||||
import org.openqa.selenium.WebDriver;
|
||||
import org.openqa.selenium.WebElement;
|
||||
import org.openqa.selenium.remote.CapabilityType;
|
||||
import org.openqa.selenium.remote.DesiredCapabilities;
|
||||
import org.openqa.selenium.remote.RemoteWebDriver;
|
||||
|
||||
import java.net.URL;
|
||||
import java.text.MessageFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
/**
|
||||
* @author Ross Rowe
|
||||
*/
|
||||
public class SauceTest {
|
||||
|
||||
private WebDriver driver;
|
||||
|
||||
private List<String> values;
|
||||
|
||||
private static final int MINIMUM = 0;
|
||||
private static final int MAXIMUM = 10;
|
||||
|
||||
@Before
|
||||
public void setUp() throws Exception {
|
||||
// set up appium
|
||||
String sauceUserName = System.getenv("SAUCE_USER_NAME");
|
||||
String sauceAccessKey = System.getenv("SAUCE_ACCESS_KEY");
|
||||
DesiredCapabilities capabilities = new DesiredCapabilities();
|
||||
capabilities.setCapability(CapabilityType.BROWSER_NAME, "iOS");
|
||||
capabilities.setCapability(CapabilityType.VERSION, "6.0");
|
||||
capabilities.setCapability(CapabilityType.PLATFORM, "Mac");
|
||||
capabilities.setCapability("app", "https://raw.github.com/appium/appium/master/assets/TestApp.app.zip");
|
||||
|
||||
driver = new RemoteWebDriver(new URL(MessageFormat.format("http://{0}:{1}@ondemand.saucelabs.com:80/wd/hub"), sauceUserName, sauceAccessKey),
|
||||
capabilities);
|
||||
values = new ArrayList<String>();
|
||||
}
|
||||
|
||||
@After
|
||||
public void tearDown() throws Exception {
|
||||
driver.quit();
|
||||
}
|
||||
|
||||
|
||||
private void populate() {
|
||||
//populate text fields with two random number
|
||||
List<WebElement> elems = driver.findElements(By.tagName("textField"));
|
||||
Random random = new Random();
|
||||
|
||||
for (WebElement elem : elems) {
|
||||
String rndNum = String.valueOf(random.nextInt(MAXIMUM - MINIMUM + 1) + MINIMUM);
|
||||
elem.sendKeys(rndNum);
|
||||
values.add(rndNum);
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testUIComputation() throws Exception {
|
||||
|
||||
// populate text fields with values
|
||||
populate();
|
||||
// trigger computation by using the button
|
||||
WebElement button = driver.findElement(By.tagName("button"));
|
||||
button.click();
|
||||
// is sum equal ?
|
||||
WebElement texts = driver.findElement(By.tagName("staticText"));
|
||||
assertEquals(texts.getText(), values.get(0) + values.get(1));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,79 @@
|
||||
package com.saucelabs.appium;
|
||||
|
||||
import org.junit.After;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.openqa.selenium.By;
|
||||
import org.openqa.selenium.WebDriver;
|
||||
import org.openqa.selenium.WebElement;
|
||||
import org.openqa.selenium.remote.CapabilityType;
|
||||
import org.openqa.selenium.remote.DesiredCapabilities;
|
||||
import org.openqa.selenium.remote.RemoteWebDriver;
|
||||
|
||||
import java.io.File;
|
||||
import java.net.URL;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
/**
|
||||
* @author Ross Rowe
|
||||
*/
|
||||
public class SimpleTest {
|
||||
|
||||
private WebDriver driver;
|
||||
|
||||
private List<String> values;
|
||||
|
||||
private static final int MINIMUM = 0;
|
||||
private static final int MAXIMUM = 10;
|
||||
|
||||
@Before
|
||||
public void setUp() throws Exception {
|
||||
// set up appium
|
||||
File app = new File(
|
||||
"../../apps/TestApp/build/Release-iphonesimulator",
|
||||
"TestApp.app");
|
||||
DesiredCapabilities capabilities = new DesiredCapabilities();
|
||||
capabilities.setCapability(CapabilityType.BROWSER_NAME, "iOS");
|
||||
capabilities.setCapability(CapabilityType.VERSION, "6.0");
|
||||
capabilities.setCapability(CapabilityType.PLATFORM, "Mac");
|
||||
capabilities.setCapability("app", app.getAbsolutePath());
|
||||
driver = new RemoteWebDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
|
||||
values = new ArrayList<String>();
|
||||
}
|
||||
|
||||
@After
|
||||
public void tearDown() throws Exception {
|
||||
driver.quit();
|
||||
}
|
||||
|
||||
|
||||
private void populate() {
|
||||
//populate text fields with two random number
|
||||
List<WebElement> elems = driver.findElements(By.tagName("textField"));
|
||||
Random random = new Random();
|
||||
for (WebElement elem : elems) {
|
||||
String rndNum = String.valueOf(random.nextInt(MAXIMUM - MINIMUM + 1) + MINIMUM);
|
||||
elem.sendKeys(rndNum);
|
||||
values.add(rndNum);
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testUIComputation() throws Exception {
|
||||
|
||||
// populate text fields with values
|
||||
populate();
|
||||
// trigger computation by using the button
|
||||
WebElement button = driver.findElement(By.tagName("button"));
|
||||
button.click();
|
||||
// is sum equal ?
|
||||
WebElement texts = driver.findElement(By.tagName("staticText"));
|
||||
assertEquals(texts.getText(), values.get(0) + values.get(1));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -1,7 +1,187 @@
|
||||
package com.saucelabs.appium;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.openqa.selenium.By;
|
||||
import org.openqa.selenium.Point;
|
||||
import org.openqa.selenium.WebDriver;
|
||||
import org.openqa.selenium.WebElement;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
/**
|
||||
* @author Ross Rowe
|
||||
*/
|
||||
public class UICatalogTest {
|
||||
|
||||
private WebDriver driver;
|
||||
|
||||
private WebElement row;
|
||||
|
||||
private void openMenuPosition(int index) {
|
||||
|
||||
//populate text fields with two random number
|
||||
WebElement table = driver.findElement(By.tagName("tableView"));
|
||||
row = table.findElements(By.tagName("tableCell")).get(index);
|
||||
row.click();
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void findElement() throws Exception {
|
||||
//first view in UICatalog is a table
|
||||
WebElement table = driver.findElement(By.tagName("tableView"));
|
||||
assertNotNull(table);
|
||||
//is number of cells/rows inside table correct
|
||||
List<WebElement> rows = table.findElements(By.tagName("tableCell"));
|
||||
assertEquals(12, rows.size());
|
||||
//is first one about buttons
|
||||
assertEquals(rows.get(0).getText(), "Buttons, Various uses of UIButton");
|
||||
//navigationBar is not inside table
|
||||
WebElement nav_bar = table.findElement(By.tagName("navigationBar"));
|
||||
assertNull(nav_bar);
|
||||
//there is nav bar inside the app
|
||||
nav_bar = driver.findElement(By.tagName("navigationBar"));
|
||||
assertNotNull(nav_bar);
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void test_location() {
|
||||
//get third row location
|
||||
row = driver.findElements(By.tagName("tableCell")).get(2);
|
||||
assertEquals(row.getLocation().getX(), 0);
|
||||
assertEquals(row.getLocation().getY(), 152);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testScreenshot() {
|
||||
//make screenshot and get is as base64
|
||||
screenshot = driver.get_screenshot_as_base64()
|
||||
self.assertTrue(screenshot)
|
||||
//make screenshot and save it to the local filesystem
|
||||
success = self.driver.get_screenshot_as_file("foo.png")
|
||||
self.assertTrue(success)
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAttributes() {
|
||||
//go to the toolbar section
|
||||
openMenuPosition(9);
|
||||
|
||||
WebElement segmented_control = driver.findElement(By.tagName("segmentedControl"));
|
||||
//segmented_control is enabled by default
|
||||
assertTrue(segmented_control.isEnabled());
|
||||
assertTrue(segmented_control.isDisplayed());
|
||||
//row is from previous view, should not be visible
|
||||
assertFalse(row.isDisplayed());
|
||||
|
||||
WebElement tinted_switch = driver.findElements(By.tagName("switch")).get(1);
|
||||
assertEquals(tinted_switch.getText(), "Tinted");
|
||||
//check if it is in "off" position
|
||||
assertEquals(Integer.valueOf(tinted_switch.getAttribute("value")), new Integer(0));
|
||||
tinted_switch.click();
|
||||
//check if it is in "on" position
|
||||
assertEquals(Integer.valueOf(tinted_switch.getAttribute("value")), new Integer(1));
|
||||
//segmented_control should now be disabled
|
||||
assertFalse(segmented_control.isEnabled());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testTextFieldEdit() {
|
||||
//go to the text fields section
|
||||
openMenuPosition(2);
|
||||
WebElement text_field = driver.findElements(By.tagName("textField")).get(0);
|
||||
//get default/empty text
|
||||
String default_val = text_field.getAttribute("value");
|
||||
//write some random text to element
|
||||
String rnd_string = str_generator();
|
||||
text_field.sendKeys(rnd_string);
|
||||
assertEquals(text_field.getAttribute("value"), rnd_string);
|
||||
//send some random keys
|
||||
String rnd_string2 = str_generator()
|
||||
swipe = ActionChains(self.driver).send_keys(rnd_string2)
|
||||
swipe.perform()
|
||||
//check if text is there
|
||||
assertEquals(text_field.getAttribute("value"), rnd_string2);
|
||||
//clear
|
||||
text_field.clear();
|
||||
//check if is empty/has default text
|
||||
assertEquals(text_field.getAttribute("value"), default_val);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAlertInteraction() {
|
||||
//go to the alerts section
|
||||
openMenuPosition(10);
|
||||
List<WebElement> elements = driver.findElements(By.tagName("staticText"));
|
||||
|
||||
|
||||
//trigger modal alert with cancel & ok buttons
|
||||
WebElement triggerOkCancel = elements.get(14);
|
||||
triggerOkCancel.click();
|
||||
WebElement alert = driver.switchTo();
|
||||
//check if title of alert is correct
|
||||
assertEquals(alert.getText(), "UIAlertView");
|
||||
alert.accept();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testScroll() {
|
||||
//scroll menu
|
||||
//get initial third row location
|
||||
row = driver.findElements(By.tagName("tableCell")).get(2);
|
||||
Point location1 = row.getLocation();
|
||||
//perform swipe gesture
|
||||
swipe = TouchActions(self.driver).flick(0, -20);
|
||||
swipe.perform()
|
||||
//get new row coordinates
|
||||
Point location2 = row.getLocation();
|
||||
assertEquals(location1.getX(), location2.getX());
|
||||
assertNotSame(location1.getY(), location2.getY());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSlider() {
|
||||
//go to controls
|
||||
openMenuPosition(1);
|
||||
//get the slider
|
||||
WebElement slider = driver.findElement(By.tagName("slider"));
|
||||
assertEquals(slider.getAttribute("value"), "50%");
|
||||
drag = TouchActions(self.driver)
|
||||
drag.flick_element(slider, -0.5, 0, 0)
|
||||
drag.perform()
|
||||
assertEquals(slider.getAttribute("value"), "0%");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSessions() {
|
||||
data = json.loads(urllib2.urlopen("http://localhost:4723/wd/hub/sessions").read())
|
||||
self.assertEqual(self.driver.session_id, data[0]['id'])
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSize() {
|
||||
table = driver.find_element_by_tag_name("tableView").size
|
||||
row = driver.find_elements_by_tag_name("tableCell")[0].size
|
||||
assertEquals(table['width'], row['width'])
|
||||
assertNotSame(table['height'], row['height'])
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSource() {
|
||||
//get main view soruce
|
||||
String source_main = driver.getPageSource();
|
||||
assertTrue(source_main.contains("UIATableView"));
|
||||
assertTrue(source_main.contains("TextFields, Uses of UITextField");
|
||||
|
||||
//got to text fields section
|
||||
openMenuPosition(2);
|
||||
String source_textfields = driver.getPageSource();
|
||||
assertTrue(source_textfields.contains("UIAStaticText"));
|
||||
assertTrue(source_textfields.contains("TextFields");
|
||||
|
||||
assertNotSame(source_main, source_textfields);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,6 +19,12 @@
|
||||
<version>LATEST</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.seleniumhq.selenium</groupId>
|
||||
<artifactId>selenium-java</artifactId>
|
||||
<version>LATEST</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
|
||||
Reference in New Issue
Block a user