这是我的设置课程:
公共类SetupClass {
//AppiumDriver<MobileElement> driver;
AndroidDriver<MobileElement> d;
public Properties prop =null;
public File file;
public FileInputStream fis;
@Parameters(value ="Android")
@BeforeSuite
public void setup(String Android) throws IOException,Exception{
LoadPropertiesFile();
DesiredCapabilities caps = new DesiredCapabilities();
/*caps.setCapability("plateformName","Android");
caps.setCapability(CapabilityType.PLATFORM_NAME,"Android");*/
if (Android.equalsIgnoreCase("Moto_g4_Plus")) {
caps.setCapability(MobileCapabilityType.PLATFORM_NAME,"Android");
caps.setCapability(MobileCapabilityType.PLATFORM_VERSION,"7.0");
caps.setCapability(MobileCapabilityType.UDID,"ZY223WZSQ9");
caps.setCapability(MobileCapabilityType.DEVICE_NAME,"Moto G4 Plus");
}
caps.setCapability("app","C:\\Users\\amarjeet.sharma\\eclipse-workspace\\com.asm.app\\src\\test\\resources\\app\\asmVisit.apk");
caps.setCapability("appPackage","com.sumasoft.net.asmscheduler");
caps.setCapability("appactivity","md5f32326382a711c73d2de951d70f3bd5e.Mainactivity");
caps.setCapability("autoGrantPermissions",true);
URL url;
try {
url = new URL("http://127.0.0.1:4723/wd/hub");
//driver = new AppiumDriver<MobileElement>(url,caps);
d = new AndroidDriver<MobileElement>(url,caps);
Thread.sleep(5000);
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
System.out.println("Cause is:" +e.getcause());
System.out.println("Message is:" +e.getMessage());
e.printStackTrace();
}
}
public void LoadPropertiesFile() throws IOException {
prop=new Properties();
file =new File(System.getProperty("user.dir")+"/src/main/resources/config.properties");
fis=new FileInputStream(file);
prop.load(fis);
//System.out.println(prop.getProperty("userId"));
}
//@AfterTest
public void TearDown() throws IOException{
System.out.println("Quit");
d.quit();
}
}
这是我的LoginTest
公共类LoginTest扩展了SetupClass {
@Test(priority = 1)
public void login() throws Exception {
LoginPage lp = new LoginPage(d);
//System.out.println(prop.getProperty("userId"));
lp.username(prop.getProperty("userId"));
Thread.sleep(500);
lp.password(prop.getProperty("Passwd"));
Thread.sleep(500);
lp.loginButton();
}
}
这是我创建的新旅程课程
公共类AddJourneyTest扩展了SetupClass {
@Test(priority=2)
public void AddNewJourney() throws Exception {
AddjourneyPage addobj = new AddjourneyPage(d);
addobj.ClicktoAdd();
addobj.SelectFromToDate();
addobj.SelectState();
addobj.SelectCity();
addobj.ClickonSubmit();
}
}
我正在为AddJourney类获取NullPointerException 我认为当我将其作为TestNG运行时,驱动程序将启动LoginTest并保存控件。这样AddJourney类不会启动驱动程序,因此不会引发NullPointerException。 我正在使用带有物理android设备的Windows系统上的Android应用自动化使用Appium Server, Java + Selenium + TestNG 。 也许我错了。但是我没有解决的办法。请帮忙。