Как решить исключение нулевого указателя веб-драйвера в селене - PullRequest
0 голосов
/ 24 марта 2020

Это код, который я написал ниже в junit. Однако он показывает мне исключение нулевого указателя для веб-драйвера. Я также напечатал «водитель». выводит «drivernull»

*package demo;
import static org.junit.jupiter.api.Assertions.*;
import java.util.concurrent .TimeUnit;
import org.junit.Before;
import org.junit.jupiter.api.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.remote.DesiredCapabilities;
class Demo1 {
    public WebDriver driver;
    String url="www.google.com";
    @Before
    public void before() {
        System.setProperty("webdriver.chrome.driver", "D:\\chromedriver.exe");
          driver = new ChromeDriver();
          driver.get(url);
          driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
    }
    @Test
    public void test() throws Exception {


        System.out.println("driver"+driver);
        Thread.sleep(2000);
        driver.findElement(By.xpath("//*[@id=\'prm\']/div/a")).click();
    }
}*

Это трассировка сбоя

java .lang.NullPointerException в demo.Demo1.test (Demo1. java: 31) at sun.reflect.NativeMethodAccessorImpl.invoke0 (собственный метод) в sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl. java: 62) в sun.reflect.DelegatingMetccessdAccessorImpl .lang.reflect.Method.invoke (Метод. java: 498) в org.junit.platform.commons.util.ReflectionUtils.invokeMethod (ReflectionUtils. java: 389) в org.junit.jupiter.engine.execution .ExecutableInvoker.invoke (ExecutableInvoker. java: 115) по адресу org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda $ invokeTestMethod $ 6 (TestMethodTestDescriptor. java: 167) юг. Org.jpg. Org. TestMethodTestDescriptor $$ Lambda $ 170 / 0000000000000000.execute (неизвестный источник) в org.junit.jupiter.engine.execution.ThrowableCollector.execute (ThrowableCollector. java: 40) в org.junit.jupiter.engine .descriptor.TestMethodTestDescriptor.invokeTestMethod (TestMethodTestDescriptor. java: 163) в org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute (TestMesthodTestTorcriptor.jpg). .execute (TestMethodTestDescriptor. java: 57) в org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.lambda $ execute $ 3 (HierarchicalTestExecutor. java: 83) в org.junit.psuort.gine. ierarchical.HierarchicalTestExecutor $$ Lambda $ 139 / 0000000000000000.execute (неизвестный источник) в org.junit.platform.engine.support.hierarchical.SingleTestExecutor.executeSafely (SingleTestExecutor. java: 66) в org.su. org.su .hierarchical.HierarchicalTestExecutor.execute (HierarchicalTestExecutor. java: 77) в org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.lambda $ null $ 2 (HierarchicalTestExecutor. java) 92. engine.support.hierarchical.HierarchicalTestExecutor $$ Lam bda $ 142 / 0000000000000000.accept (неизвестный источник) в java .util.stream.ForEachOps $ ForEachOp $ OfRef.accept (ForEachOps. java: 183) в java .util.stream.ReferencePipeline $ 2 $ 1.accept ( ReferencePipeline. java: 175) в java .util.Iterator.forEachRemaining (Iterator. java: 116) в java .util.Spliterators $ IteratorSpliterator.forEachRemaining (Spliterators. java: 1801) в java .util.stream.AbstractPipeline.copyInto (AbstractPipeline. java: 497) в java .util.stream.AbstractPipeline.wrapAndCopyInto (AbstractPipeline. java: 487) в java .util.stream.ForEachOps $ ForEachOp.evaluateSequential (ForEachOps. java: 150) в java .util.stream.ForEachOps $ ForEachOp $ OfRef.evaluateSequential (ForEachOps. java: 173) в java .util.stream.AbstractPipeline.evaluate (AbstractPipeline. java: 241) в java .util.stream.ReferencePipeline.forEach (ReferencePipeline. java: 485) в org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.lambda $ execute $ 3 ( HierarchicalTestExecutor. java: 92) на org.junit.platfo rm.engine.support.hierarchical.HierarchicalTestExecutor $$ Lambda $ 139 / 00000000000000.execute (Неизвестный источник) по адресу org.junit.platform.engine.support.hierarchical.SingleTestExecutor.executeSafely (SingleTestExgit 66): 66. .platform.engine.support.hierarchical.HierarchicalTestExecutor.execute (HierarchicalTestExecutor. java: 77) в org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.lambda * null $ 2 (иерархическая иерархия: 92 * 10). org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor $$ Lambda $ 142 / 0000000000000000.accept (неизвестный источник) в java .util.stream. ForEachOps $ ForEachOp $ OfRef.accept (ForEachOps. java: 183) в java .util.stream.ReferencePipeline $ 2 $ 1.accept (ReferencePipeline. java: 175) в java .util.Iterator.forEachRemaining ( Iterator. java: 116) в java .util.Spliterators $ IteratorSpliterator.forEachRemaining (Spliterators. java: 1801) в java .util.stream.AbstractPipeline.copyInto (AbstractPipeline. java: 497) в java .util.stream.AbstractPipeline.wrapAndCopyInto (AbstractPipeline. java: 487) в java .util.stream.ForEachOps $ ForEachOp.evaluateSequential (ForEachOps. java: 150) в java .util .stream.ForEachOps $ ForEachOp $ OfRef.evaluateSequential (ForEachOps. java: 173) в java .util.stream.AbstractPipeline.evaluate (AbstractPipeline. java: 241) в java .util.stream.ReferencePipeline .forEach (ReferencePipeline. java: 485) в org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.lambda $ execute $ 3 (HierarchicalTestExecutor. java: 92) в org.junit.platform.engine.support. hierarchical.HierarchicalTestExecutor $$ Lambda $ 139/00 00000000000000.execute (Неизвестный источник) в org.junit.platform.engine.support.hierarchical.SingleTestExecutor.executeSafely (SingleTestExecutor. java: 66) в org.junit.platform.engine.suestort.hierarchicalTecrench . java: 77) at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute (HierarchicalTestExecutor. java: 51) в org.junit.platform.engine.support.hierarchical.HierarchicalTestEng . java: 43) в org.junit.platform.launcher.core.DefaultLauncher.execute (DefaultLauncher. java: 170) в org.junit.platform.launcher.core.DefaultLauncher.execute (DefaultLauncher. java : 154) в org.junit.platform.launcher.core.DefaultLauncher.execute (DefaultLauncher. java: 90) в org.eclipse.jdt.internal.junit5.runner.JUnit5TestReference.run (JUnit5TestReference. 86: 1078 *). ) в org.eclipse.jdt.internal.junit.runner.TestExecution.run (TestExecution. java: 38) в org.eclipse.jdt.internal.junit.runner.RemoteTest Runner.runTests (RemoteTestRunner. java: 538) в org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests (RemoteTestRunner. java: 760) в org.eclipse.jdt.inrun.junit. RemoteTestRunner.run (RemoteTestRunner. java: 460) по адресу org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main (RemoteTestRunner. java: 206)

Ответы [ 3 ]

0 голосов
/ 24 марта 2020

Кажется, что-то в вашем before() вызывает исключение, потому что driver - это null. Так что get(url) или manage().

Скорее всего, это get(url) (вы можете видеть это точно в трассировке стека)

Так что new ChromeDriver(), вероятно, не удается, проверьте вашу установку.

Следовательно, когда test вызывается, driver переменная-член по-прежнему равна нулю, поэтому на экране отображается "null".

В примере get start описывается протокол в пути. Скорее всего, это не связано, но вы должны изменить

String url="www.google.com";

на

String url="http://www.google.com";
0 голосов
/ 24 марта 2020

Пожалуйста, измените

String url="www.google.com";

на

String url="http://www.google.com";

Почему мы должны это сделать, потому что метод driver.get не добавляет протокол типа "http" или "https" перед вашим URL

0 голосов
/ 24 марта 2020

Пожалуйста, проверьте путь к chromedriver.exe. Он должен быть на диске D:

Я не вижу в вашем коде ничего неправильного.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...