Probleem
We want to execute our testscripts on a iphone device. The iphone driver allows us to execute the WebDriver tests on a real iphone device.
Voorwaarden
We need to install Xcode which is available for the Mac operating systems. We also need a provisoning profile for running the script on a real device.
- We need to create a provisioning profile, so go to this website http://developer.apple.com/programs/ios/ and create a profile.
- We need to download Xcode from the following location: http://developer.apple.com/iphone
- The iPhone WebDriver application is not available from the App Store, therefore we need to check-out the code and build it manually. We can do the check-out by entering the following terminal command:
svn checkout http://selenium.googlecode.com/svn/trunk/ selenium-read-only
More information on SVN checkouts: http://www.linuxfromscratch.org/blfs/edguide/chapter03.html
Oplossing
- Open the project
selenium-read-only/iphone/iWebDriver.xcodeprojin Xcode. - Double-click on the project and set the build configuration to the latest version of the iPhone Simulator, by using the drop-down box in the top left corner.
- Configure and install the iPhone provisioning profile.
- Open
Info.plistand edit theBundle Identifiertocom.NAME.$ {PRODUCT_NAME:identifier}whereNAMEis the name you registered your provisioning profile to be an authority on. - Make sure your device is connected to your computer. Your device must also be routable from your computer. The easiest way to do this is to configure a wifi network and connect your device to it.
- Click on Run (play button). After compiling, the iphone simulator should appear and the
iWebDriverapp will be installed in it. - Now we can use the IPhoneDriver in our tests.
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.iphone.IPhoneDriver;
import org.testng.Assert;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class MobileIphoneSimulator {
private static WebDriver driver;
@BeforeClass
public void setUp() throws Exception {
driver = new IPhoneDriver();
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.iphone.IPhoneDriver;
import org.testng.Assert;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
public class MobileIphoneSimulator {
private static WebDriver driver;
@BeforeClass
public void setUp() throws Exception {
driver = new IPhoneDriver();
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"));
}
}
|
