我是Appium的新手,刚刚开始,我一直在学习一个例子,并在Android平板电脑上使用基本的Contacts 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();
}
}`
我得到的例外是:
java.lang.NullPointerException at addContact.addNewContact(addContact.java:49)
发生这种情况的行是:
WebElement addContactButton = driver.findElementById("com.example.android.contactmanager:id/addContactButton");
之所以显示为空指针,是因为您将"testng"注释用于"Tests",将"junit"注释用作"Before and after"。将import org.testng.annotations.Test;
更改为import org.junit.Test;
,并将其作为junit测试运行。
这应该有效,只是在我这边测试了一下。