Java “面向”;“空指针异常”;在阿皮姆
我正在学习appium,试图将对象从一个类调用到另一个类,但遇到空指针异常。 下面是我的代码:Java “面向”;“空指针异常”;在阿皮姆,java,android,selenium-webdriver,appium,Java,Android,Selenium Webdriver,Appium,我正在学习appium,试图将对象从一个类调用到另一个类,但遇到空指针异常。 下面是我的代码: public class TestCommons { public AndroidDriver driver; public void setUp() { DesiredCapabilities capabilities = new DesiredCapabilities(); capabilities.setCapability("deviceN
public class TestCommons {
public AndroidDriver driver;
public void setUp() {
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("deviceName", "MotoE");
File file = new File("D:/APK1/com.vector.guru99.apk");
capabilities.setCapability("app", file);
try {
driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
} catch (MalformedURLException e) {
e.printStackTrace();
}
}
public void tearDown() {
driver.closeApp();
}
}
我想在其他类中使用上述类,即“TestCommons”。我想使用驱动程序对象
二等舱如下:
public class Day03 extends TestCommons {
TestCommons commons = new TestCommons();
@BeforeClass
public void beforeClass() {
commons.setUp();
}
@Test(enabled = true)
public void f() {
if (driver.findElement(By.id("com.vector.guru99:id/action_quiz")).isDisplayed()) {
System.out.println("Quiz is displayed");
driver.findElement(By.id("com.vector.guru99:id/action_quiz")).click();
System.out.println("quiz is click");
}
}
@AfterClass(enabled = true)
public void afterClass() {
commons.tearDown();
}
}
正在第二个程序@中获取空指针:
if(driver.findElement(By.id("com.vector.guru99:id/action_quiz")).isDisplayed();
谁能给我澄清一下。你有两个问题之一 1) 在setUp()中未正确设置驱动程序。如果是这种情况,你可能会有一个例外。检查日志以确保没有异常 2) driver.findElement(By.id(“com.vector.guru99:id/action\u quick”)返回null。您可以通过设置调试点并在该调用上运行求值表达式来检查这一点。请尝试以下方法:
public class TestCommons {
public static AndroidDriver driver;
@BeforeClass
public void setUp() {
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("deviceName", "MotoE");
File file = new File("D:/APK1/com.vector.guru99.apk");
capabilities.setCapability("app", file);
try {
driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
} catch (MalformedURLException e) {
e.printStackTrace();
}
}
@AfterClass
public void tearDown() {
driver.closeApp();
}
}
在哪里声明驱动程序?在“TestComons”类中声明。问题中的第一个类在调用isDisplayed()之前检查driver.findElement的结果。我想你会发现你的空问题。试过了。但仍然面对着相同的方向,请。此外,appium日志将非常感谢!它工作得很好。你能给我解释一下以下几点吗。我们将“驱动程序”声明为静态的,所以不需要实例化。我们正在void setUp()中初始化为“new=…”。我们要超越司机吗?
public class Day03 extends TestCommons {
@Test(enabled = true)
public void f() {
if (driver.findElement(By.id("com.vector.guru99:id/action_quiz")).isDisplayed()) {
System.out.println("Quiz is displayed");
driver.findElement(By.id("com.vector.guru99:id/action_quiz")).click();
System.out.println("quiz is click");
}
}
}