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