java.lang.NullPointerException при запуске тестового примера через драйвер Selenium Android - PullRequest
0 голосов
/ 15 марта 2019

Я получаю сообщение об ошибке нулевого указателя при выполнении скрипта.Но приложение запускается должным образом на 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");
  }
}

1 Ответ

1 голос
/ 15 марта 2019

Вы использовали два 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 вместо того, чтобы делать еще один AndroidDriver driver там, как вы это делали используя AndroidDriver driver = new AndroidDriver(new URL("http://0.0.0.0:4723/wd/hub"), caps);

...