我的测试套件分为两部分:测试数据库、WebElements 的 xpath 位置、.click()
命令等。我还有一个测试套件。
这是一个示例测试,出于实验目的共享其处理的包。此刻我并不担心输出结果(我知道如何做到这一点),代码只需要工作即可。
package LoginPage;
import org.openqa.selenium.firefox.FirefoxDriver;
import java.util.concurrent.TimeUnit;
import org.junit.*;
import org.openqa.selenium.*;
public class FunctionCheck {
private WebDriver driver;
private String baseUrl;
@Before
public void setUp() throws Exception {
driver = new FirefoxDriver();
baseUrl = "http://www.XXXXXXXXXXX.com/";
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
}
@Test
public void test() throws Exception {
driver.get(baseUrl + "XXXXXXXXXXXX");
Thread.sleep(600);
LoginPage.enterValidCredentials myins = new LoginPage.enterValidCredentials();
myins.run();
}
@After
public void tearDown() throws Exception {
driver.quit();
}
}
这是位于同一包中的“enterValidCredentials”类。
package LoginPage;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
public class enterValidCredentials { // This class enters in a valid username and valid password on the login page.
public void run() {
WebDriver driver;
driver.findElement(By.cssSelector("input[type=\"text\"]")).sendKeys("XXXXXX");
driver.findElement(By.cssSelector("input[type=\"password\"]")).sendKeys("XXXXXX");
}
}
我遇到两个问题:
- 在“enterValidCredentials”类中,它希望我“初始化”驱动程序变量。 Eclipse 中的自动修复将第 8 行设置为
WebDriver driver = null;
。 - 执行上述操作后,我的测试抛出了
NullPointerException
。
我已经搜索文档有一段时间了。我真的很困惑到底发生了什么。我想要的只是运行 run()
方法,并将信息插入页面。这就是目标。
最佳答案
public class enterValidCredentials {
public void run(WebDriver driver) {
driver.findElement(By.cssSelector("input[type=\"text\"]")).sendKeys("XXXXXX");
driver.findElement(By.cssSelector("input[type=\"password\"]")).sendKeys("XXXXXX");
}
}
将现有的 WebDriver
实例传递到 enterValidCredentials.run
:
myins.run(driver);
关于java - 为什么我在测试中收到 NullPointerException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32994587/