java - 如何通过 <init> 中的调用解决 webdriver 设置中的 NullPointerException?

标签 java selenium nullpointerexception webdriver wait

public class MainPage extends BasePage<MainPage> {

    public MainPage(WebDriver driver) {

        super(driver);

    }

    WebDriverWait wait = new WebDriverWait(driver, WAIT_TIME);

    public LoginPage clickLoginButton() {

        wait.until(ExpectedConditions.elementToBeClickable(By.linkText("Login")));

        WebElement GoElement = driver.findElement(By.linkText("Login"));

        GoElement.click();

        return new LoginPage(driver);

    }
}

// This MainPage mistake-->WebDriverWait wait = new
// WebDriverWait(driver, WAIT_TIME);

public class UserPage extends BasePage<UserPage> {

    public UserPage(WebDriver driver) {

        super(driver);
    }

    WebDriverWait wait = new WebDriverWait(driver, WAIT_TIME);

    public UserPage clickUpdatePasswordButton() throws InterruptedException {
        driver.findElement(By.linkText("Update")).click();

        Thread.sleep(2000);

        return this;
    }
}

//该用户页面

public class UserTest extends BaseTest {

    @Test
    public void UserControl() throws InterruptedException {

        new MainPage(driver).clickLoginButton().loginSuccessful("agasgasgasga@gmail.com", "1212121211").checkMainPage().clickToAccount();
    }
}

代码错误:

java.lang.NullPointerException
    at com.google.common.base.Preconditions.checkNotNull(Preconditions.java:212)
    at org.openqa.selenium.support.ui.FluentWait.<init>(FluentWait.java:102)
    at org.openqa.selenium.support.ui.WebDriverWait.<init>(WebDriverWait.java:71)
    at org.openqa.selenium.support.ui.WebDriverWait.<init>(WebDriverWait.java:45)
    at page.MainPage.<init>(MainPage.java:20)
    at test.UserTest.UserControl(UserTest.java:16)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)
    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:300)
    at org.junit.runner.JUnitCore.run(JUnitCore.java:157)
    at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:117)
    at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:42)
    at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:262)
    at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:84)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)


Process finished with exit code 255



This show mistake

MainPage --> WebDriverWait wait = new WebDriverWait(driver,
WAIT_TIME);

最佳答案

您需要初始化驱动程序

public class BaseTest {
    protected WebDriver driver = new ChromeDriver();
    driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
}

关于java - 如何通过 <init> 中的调用解决 webdriver 设置中的 NullPointerException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41207400/

相关文章:

ruby-on-rails - 检查选择框是否具有 capybara 的某些选项

c# - 如何使用 Selenium C# PhantomJSDriver 正确设置代理?

java - 空点异常,不知道为什么?

java - Spring Boot 如何忽略 HttpStatus 异常

java - hibernate UUID.hex 与 UUID2

java - 同步方法的 weakValue 映射引用中的内存泄漏

python - 查找多个参数 Selenium Python

java - 如何获取HashMap中排序后的arrayList?

java - InjectedMock 中的 NullPointerException

Java 空行为