【问题标题】:java.lang.NullPointerException when running a testcase via Selenium Android driver通过 Selenium Android 驱动程序运行测试用例时出现 java.lang.NullPointerException
【发布时间】:2019-03-15 20:21:13
【问题描述】:

我在执行脚本时收到“空指针错误”。但是应用程序在 Geny 动作上正确启动,但无法执行进一步的操作,例如单击“跳过用户”按钮。 下面是我为它编写的代码

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");
  }
}

【问题讨论】:

  • 您在哪一行得到 NullPointerException?
  • 请显示控制台错误或错误sn-p
  • ** NullPointerException** 错误现已消失,但新错误 org.openqa.selenium.WebDriverException:未定义命令或响应编解码器。无法继续显示...我在更正后更新了代码。你能帮忙解决最新的错误吗

标签: android appium appium-android


【解决方案1】:

您在代码中使用了两个drivers。一个是您声明为public static 的全局级别,另一个是您在@BeforeMethod 中使用和初始化的。
因此,由于@BeforeMethod 中的driver 是通过使用AndroidDriver driver = new AndroidDriver(new URL("http://0.0.0.0:4723/wd/hub"), caps); 初始化的,所以它工作正常并打开应用程序。但在那之后,您的代码会转到@Test,您正在使用的驱动程序是全局驱动程序,并且该驱动程序未初始化,这就是您获得NullPointerException 的原因

要解决这个问题,请在@BeforeMethod@Test 中使用相同的AndroidDriver driver

所以,您只需要在您的@BeforeMethod 中使用driver = new AndroidDriver(new URL("http://0.0.0.0:4723/wd/hub"), caps);(这将初始化全局驱动程序并将在您的@Test 中使用),而不是在那里创建另一个AndroidDriver driver,就像您之前所做的那样使用AndroidDriver driver = new AndroidDriver(new URL("http://0.0.0.0:4723/wd/hub"), caps);

【讨论】:

  • 能否请教一下应该怎么做?因为我是新手。我已经更新了它,但没有工作
  • @AressQa 只需在您的代码行caps.setCapability("app", app.getAbsolutePath()); 之后使用driver = new AndroidDriver(new URL("http://0.0.0.0:4723/wd/hub"), caps);,它就可以正常工作,因为您的代码中的其他一切都很好
  • 感谢您的快速回复。错误消失了,但出现了新错误。
  • @AressQa 您现在遇到的错误是什么?
  • org.openqa.selenium.WebDriverException:未定义命令或响应编解码器。无法继续
猜你喜欢
  • 2016-11-24
  • 1970-01-01
  • 1970-01-01
  • 2020-06-26
  • 1970-01-01
  • 2016-08-20
  • 2012-02-23
  • 1970-01-01
  • 2021-02-13
相关资源
最近更新 更多