Probleem
We want to run our testscripts on a real Android device. The android driver allows us to execute our tests against an Android browser. This can be a simulator or a real device.
Voorwaarden
Before we can register our device we have to download the android SDK (Software Development Kit) from the following location: http://developer.android.com/sdk/
Oplossing
We can divide this section into three parts: setup the device, install the WebDriver APK and finally run the test.
Setup the device
Connect the android device with the computer using a USB cable.
Install the WebDriver APK
- We need to retrieve the serial id with the following command:
/android_sdk/platform-tools/adb devices - Download the Android server from http://code.google.com/p/selenium/downloads/list and save it in the platform-tools directory. To install the application enter:
$./adb -s -e install -r android-server.apk - Start the Android WebDriver application,by running this command:
$./adb -s shell am start -a android.intent.action.MAIN -n org.openqa.selenium.android.app/.MainActivity - Now we need to setup the port forwarding in order to forward traffic from the host machine to the emulator. Enter the following in the terminal:
$./adb -s forward tcp:8080 tcp:8080
Run the test
Now we have our environment setup we can run our tests. The test will look like this:
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.android.AndroidDriver;
import org.testng.Assert;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class MobileAndroidDevice {
private static WebDriver driver;
@BeforeClass
public void setUp() throws Exception {
driver = new AndroidDriver();
driver.get("http://selenium.polteq.com/prestashop/");
}
@AfterClass
public void tearDown() {
driver.close();
driver.quit();
}
@Test
public void measurePerformance() throws InterruptedException {
Thread.sleep(1500);
driver.findElement(By.cssSelector("input#search_query_top")).sendKeys("ipod nano");
driver.findElement(By.cssSelector("input[name='submit_search']")).click();
String searchHeader = driver.findElement(By.cssSelector("H1")).getText().toLowerCase();
Assert.assertTrue(searchHeader.contains("ipod nano"));
}
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.android.AndroidDriver;
import org.testng.Assert;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class MobileAndroidDevice {
private static WebDriver driver;
@BeforeClass
public void setUp() throws Exception {
driver = new AndroidDriver();
driver.get("http://selenium.polteq.com/prestashop/");
}
@AfterClass
public void tearDown() {
driver.close();
driver.quit();
}
@Test
public void measurePerformance() throws InterruptedException {
Thread.sleep(1500);
driver.findElement(By.cssSelector("input#search_query_top")).sendKeys("ipod nano");
driver.findElement(By.cssSelector("input[name='submit_search']")).click();
String searchHeader = driver.findElement(By.cssSelector("H1")).getText().toLowerCase();
Assert.assertTrue(searchHeader.contains("ipod nano"));
}
}
|
