我正在用Selenium编写测试代码,TestNG。我试图在@BeforeClass
部分设置一些元素,因为我在同一页面上重复这些操作。但我得到空指针异常。有没有办法解决这个问题?
public class RunTest {
private static WebElement user;
private static WebElement pass;
private static WebElement login;
@BeforeClass
public static void driveraBaglan() {
//Driver is declared here. I removed it to give the simple code.
user = driver.findElement(By.id("user"));
pass = driver.findElement(By.id("pass"));
login = driver.findElement(By.xpath("//button[contains(.,'Log In')]"));
statusMessage = driver.findElement(By.id("login-status-message")).getText();
}
@Test(priority=1)
public void loginNoInfo() {
user.clear();
pass.clear();
}
字符串
我在user.clear()
、pass.clear()
和login.click()
函数上得到空指针错误。页上的所有测试都在同一页上运行。我不想在页面上的每个测试中使用重复的“find element by id”标记。
4条答案
按热度按时间dgiusagp1#
字符串
尝试更改注解
型
bqjvbblv2#
我从来没有使用过TestNG,但我使用了Junit。尝试复制您的示例,我获得了以下异常:
字符串
原因是,在我导入的类中,我使用了Junit的BeforeClass:
型
而不是TestNG。
如果空指针异常是相同的,请确保导入的类是正确的:
型
l2osamch3#
我也遇到了同样的问题,因为我做了一个意外的改变。
在@BeforeClass或@BeforeTest中初始化的对象也可能会出现空指针异常,当您遇到如下的两难情况时(类被设置为禁用的测试类,同时启用了测试方法)。
字符串
在这里,当您通过只为类放置
@Test(enabled=false)
来运行完整套件时,套件仍然会在类中运行单独的测试,因为@Test
注解存在于那里。但是,由于@BeforeClass
没有为整个类运行,对象'a'没有初始化,将导致空指针异常。在这种情况下,单独的
@Test
注解也需要更改为@Test(enabled=false)
jfgube3f4#
对我来说,我必须包含alwaysRun = true,这意味着这可能是组的错误配置。
字符串