我想創建一個框架來測試跨平臺移動web應用程序(非本地)。這裏是我的代碼是如何設置:我的appium的第二個測試不斷得到一個java零點異常
測試類:
public class TestSuite extends MobileLibrary{
@BeforeClass
public static void setUpTests() throws Exception {
setUp();
}
@AfterClass
public static void cleanUpTests() throws Exception {
driver.quit();
}
@Test
public void validateSignIn() throws Exception
{
String username = "testtest";
String password = "testtest";
SignInMobile(driver,username,password);
assertTrue(true);
}
@Test
public void randomTests() throws Exception
dbcSelector(driver,"test");
assertTrue(true);
}
}
基類
public class SetupBase
{
protected static AppiumDriver driver;
protected static AppiumPlatform appiumPlatform;
protected static DeviceSize deviceSize;
protected static DeviceName deviceName;
protected static String deviceID;
protected static DesiredCapabilities capabilities;
protected static enum AppiumPlatform{
DESKTOP,IOS,ANDROID
}
protected static enum DeviceSize{
SMALL,MEDIUM,LARGE
}
protected static enum DeviceName{
NEXUS7,S5,IPHONE5S
}
public static void setUp() throws MalformedURLException /*throws Exception*/ {
String deviceNameEnv = System.getenv("DEVICENAME");
switch(deviceNameEnv){
//sets devicename here
}
//sets platform here
if(deviceName==DeviceName.NEXUS7 || deviceName==DeviceName.S5)
appiumPlatform = AppiumPlatform.ANDROID;
else if(deviceName==DeviceName.IPHONE5S)
appiumPlatform = AppiumPlatform.IOS;
else
appiumPlatform = AppiumPlatform.DESKTOP;
switch(deviceName){
//sets size here
}
capabilities = new DesiredCapabilities();
capabilities.setCapability("deviceName",deviceID);
if(appiumPlatform==AppiumPlatform.ANDROID){
capabilities.setCapability("platformName","Android");
capabilities.setCapability("browserName","Chrome");
driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
}
else if(appiumPlatform==AppiumPlatform.IOS){
capabilities.setCapability("platformName","iOS");
capabilities.setCapability("browserName","Safari");
driver = new IOSDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
}
}
}
不管我做什麼,任何時候我嘗試在第二次測試我將使用驅動程序得到一個java空指針異常。 MobileLibrary擴展了基類幷包含了我所有的WebDriver元素函數。
編輯:如果我直接在我的第二個測試中做driver.findelement,我得到一個未找到的元素異常。它看起來像@test結束後正在重置,我不知道是什麼。
你在哪裏編碼了「dbcSelector()」&「SignInMobile()」方法?其中有什麼? – Surya 2014-11-25 06:21:42
手機庫。它基本上是一個返回driver.findelement。如果我在第一個測試中調用它,它會起作用。 – Matt 2014-11-25 11:54:48