执行脚本时出现“空指针错误”。但是应用在Geny motion上正常启动,但是无法执行其他操作,例如单击“跳过用户”按钮。 以下是我为此编写的代码
public class mainProgram {
public static AndroidDriver driver;
@Test
public void skipUser() {
driver.findElement(By.id("com.hp.pregnancy.lite:id/btn_join_later")).click();
}
@BeforeMethod
public void beforeMethod() {
try {
File app = new File("D:\\Automation builds\\Testbuild.apk");
DesiredCapabilities caps = new DesiredCapabilities();
caps.setCapability("deviceName", "Google Nexus 6P - 7.1.0 - API 25 - 1440x2560");
caps.setCapability("udid", "192.168.250.101:5555"); //Give Device ID of your mobile phone
caps.setCapability("platformName", "android");
caps.setCapability("platformVersion", "7.1.0");
caps.setCapability("appPackage", "com.hp.pregnancy.lite");
caps.setCapability("appActivity", "com.hp.pregnancy.lite.onboarding.SplashScreenActivity");
caps.setCapability("noReset", "true");
caps.setCapability("autoAcceptAlerts", "true");
caps.setCapability("autoDismissAlerts", "true");
// caps.setCapability("fullReset",false);
caps.setCapability("app", app.getAbsolutePath());
Androiddriver driver = new AndroidDriver(new URL("http://0.0.0.0:4723/wd/hub"), caps);
System.out.println("Pregnancy+ application launched successfully on Genymotion");
Thread.sleep(5000);
} catch (Exception e) {
System.out.println("Step failed - Unable to setup with the predefined Capabilities");
}
}
@AfterMethod
public void afterMethod() {
System.out.println("afterMethod");
}
}
答案 0 :(得分:1)
您在代码中使用了两个drivers
。一种是在全局级别上已声明为public static
,另一种是在@BeforeMethod
中使用并初始化的。
因此,driver
中的@BeforeMethod
通过使用AndroidDriver driver = new AndroidDriver(new URL("http://0.0.0.0:4723/wd/hub"), caps);
进行初始化,可以正常工作并打开应用程序。但是之后,您的代码将转到@Test
,您正在使用的驱动程序是全局驱动程序,并且该驱动程序尚未初始化,这就是为什么您获得NullPointerException
要解决此问题,请在AndroidDriver driver
和@BeforeMethod
中使用相同的@Test
因此,您只需要在driver = new AndroidDriver(new URL("http://0.0.0.0:4723/wd/hub"), caps);
中使用@Test
(这将初始化全局驱动程序并将在您的@BeforeMethod
中使用),而不用创建另一个{{1} },就像您使用AndroidDriver driver