Ошибка @FindBy в классе Select (java.lang.NullPointerException)

Я пытаюсь реализовать Page Object Factory в Selenium WebDriver, но при запуске кода Eclipse показывает мне следующее сообщение об ошибке:

java.lang.NullPointerException на org.openqa.selenium.support.ui.Select (Select.java:44) на странице ) в sun.reflect.NativeMethodAccessorImpl.invoke0(собственный метод) в sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) в sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) в java.lang.reflect. Method.invoke(Method.java:498) в org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50) в org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) ) в org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47) в org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) на org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26) на org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27) на org.junit.runners.ParentRunner .runLeaf(ParentRunner.java:325) в org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78) в org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57) в org.junit.runners. ParentRunner$3.run(ParentRunner.java:290) в org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) в org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) в org.junit .runners.ParentRunner.access$000(ParentRunner.java:58) в org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) в org.junit.runners.ParentRunner.run(ParentRunner.java:363) в org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86) в org.eclipse.jdt.internal.junit.runner.TestExecution.r un(TestExecution.java:38) в org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:538) в org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner. java:760) в org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:460) в org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:206)

Ошибка возникает в строке 23 класса FaturamentoGeTratamentoOsPage и в строке 38 класса FaturamentoGeConectividadeFacilidadesTest.

Следуйте коду 2 классов и ошибке изображения.

FaturamentoGeTratamentoOsPage

public class FaturamentoGeTratamentoOsPage {

WebDriver driver;

 @FindBy(id = "cboMotivo") 
 WebElement CBOMotivo;

public FaturamentoGeTratamentoOsPage(WebDriver driver) {
    this.driver = driver;
}
public void preencherCampoMotivo(String CampoMotivo) {
    // Campo Motivo
    Select slcMotivo = new Select(CBOMotivo);
    slcMotivo.selectByVisibleText(CampoMotivo); 
}
}

FaturamentoGeConectividadeFacilidadesTest

public class FaturamentoGeConectividadeFacilidadesTest {
static WebDriver driver;
@Before
public void setUp() throws Exception {
    SelecionarNavegador nav = new SelecionarNavegador();
    driver = nav.iniciarNavegador("chrome", "http://10.5.9.45/BkoMais_Selenium/");
}
@Test
public void selecionarFacilidades() throws Exception {
    // Logando na aplicação
    LogarBkoMaisPage login = new LogarBkoMaisPage(driver);
    login.logar("844502", "Bcc201707");

    // BackOffice >> FaturamentoGe >> Conectividade
    FaturamentoGeConectividadeFacilidadesPage menu = new FaturamentoGeConectividadeFacilidadesPage(driver);
    menu.logarFaturamentoGeConectividade();

    //Registro >> Novo caso
    RegistroNovoCasoPage reg = new RegistroNovoCasoPage(driver);
    reg.registrarCaso();

    //Preencher campos
    FaturamentoGeTratamentoOsPage campo = new FaturamentoGeTratamentoOsPage(driver);
    campo.preencherCampoMotivo(" Concluido ");
}
@After
public void tearDown() throws Exception {
    Thread.sleep(5000);
    driver.quit();
}
}

Создать страницу

FaturamentoGeConectividadeFacilidadesTest


person Leandro Pereira    schedule 12.01.2018    source источник
comment
Добавьте PageFactory.initElements(драйвер, это); это для вашей конструкции класса объектов   -  person Ankur Singh    schedule 12.01.2018
comment
Возможный дубликат Что такое исключение NullPointerException и как его исправить?   -  person JeffC    schedule 13.01.2018
comment
Возможный дубликат NullpointerException в Selenium при использовании SendKeys   -  person DebanjanB    schedule 14.01.2018


Ответы (1)


Это происходит потому, что вы используете PageFactory, предоставленную JAVA, но не инициализируя ее.

Есть два места, где вы можете инициализировать его,

Внутри объекта страницы

public FaturamentoGeTratamentoOsPage(WebDriver driver) {
    this.driver = driver;
    PageFactory.initElements(driver, this);
}

При создании объекта страницы

FaturamentoGeTratamentoOsPage campo = PageFactory.initElements(driver, FaturamentoGeTratamentoOsPage.class);
person Gaurang Shah    schedule 12.01.2018