Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 应用程序驱动程序空指针异常_Java_Android_Appium - Fatal编程技术网

Java 应用程序驱动程序空指针异常

Java 应用程序驱动程序空指针异常,java,android,appium,Java,Android,Appium,我是Appium的新手,刚刚起步,我一直在遵循一个示例,并使用Android平板电脑上的基本联系人apk作为开始。我的代码基本上是从下面的示例中复制的,但是当我尝试运行测试时,我得到了一个空指针异常。我做了一些调试,发现driver=null就是我得到这个异常的原因。我环顾四周,发现了一些我认为可能有用的代码,但它没有 我的密码是 import io.appium.java_client.AppiumDriver; import io.appium.java_client.android.And

我是Appium的新手,刚刚起步,我一直在遵循一个示例,并使用Android平板电脑上的基本联系人apk作为开始。我的代码基本上是从下面的示例中复制的,但是当我尝试运行测试时,我得到了一个空指针异常。我做了一些调试,发现driver=null就是我得到这个异常的原因。我环顾四周,发现了一些我认为可能有用的代码,但它没有

我的密码是

import io.appium.java_client.AppiumDriver;
import io.appium.java_client.android.AndroidDriver;
import io.appium.java_client.remote.MobileCapabilityType;
import org.junit.After;
import org.junit.Before;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.testng.annotations.Test;
import java.util.concurrent.TimeUnit;
import java.net.MalformedURLException;
import java.net.URL;

public class addContact {

    AppiumDriver driver;

    @Before
    public void setUp () throws Exception {

        new DesiredCapabilities();
        DesiredCapabilities capabilities = DesiredCapabilities.android();
           capabilities.setCapability(MobileCapabilityType.DEVICE_NAME,"AndroidTestDevice");

        try
        {
            driver = new AndroidDriver(new URL("http://0.0.0.0:4723/wd/hub"), capabilities);
            driver.manage().timeouts().pageLoadTimeout(120, TimeUnit.SECONDS);

        }
        catch (MalformedURLException e)
        {
            System.out.println("URL init error");
        }

    }

    @After
    public void tearDown () throws Exception {
        driver.quit();
    }

    @Test
    public void addNewContact (){


     System.out.println (driver);
     WebElement addContactButton = driver.findElementById("com.example.android.contactmanager:id/addContactButton");
     addContactButton.click();
    }

}`
我得到的例外是:

其中出现的一行是:

WebElement addContactButton = driver.findElementById("com.example.android.contactmanager:id/addContactButton");

它之所以显示为空指针,是因为“Tests”使用“testng”注释,而“Before和after”使用“junit”注释。更改
导入org.testng.annotations.Test
导入org.junit.Test并将其作为junit测试运行


这应该行得通,只是在我这边测试了一下。

你的设置调用正确吗,并且没有给出“URL初始化错误”?从这段代码中无法解释为什么它是空的。。。有很多可能性:
setUp()
没有被调用(或者在调用
addNewContact()
之后被称为pmöy,而不是之前),AppiumDriver构造函数中发生异常,等等……我以为setUp总是首先被调用,因为它的标签是@before?不是这样吗?如果不是,这肯定可以解释我的问题,但我如何强制安装首先执行?可能重复的ahhh。。。非常感谢Gaurav!
WebElement addContactButton = driver.findElementById("com.example.android.contactmanager:id/addContactButton");