"public ThreadLocal<WebDriver> webdriver = new ThreadLocal<WebDriver><WebDriver>();" yöntemini kullanırken Dinleyici sınıfım için WebDriver nasıl edinilir

0

Soru

Dinleyicimin WEB sürücüsü için NullPointerException almaya devam ediyorum. temel sınıfta webdriver'ımda ThreadLocal kullandığım için mi? eğer öyleyse, dinleyicimin onTestSuccess yöntemi için test durumunun sürücüsünü nasıl alabilirim?

Bu benim Dinleyici Sınıfım.:

@Override
    public void onTestSuccess(ITestResult result) {
        extentTest.get().log(Status.PASS,"Test Passed");
        WebDriver driver = null;
        Object testObject = result.getInstance();
        Class clazz = result.getTestClass().getRealClass();
        try {
            driver = (WebDriver)clazz.getField("webdriver").get(testObject);
        } catch (Exception e) {
        }
        try {
            extentTest.get().addScreenCaptureFromPath(getScreenShotPath(result.getMethod().getMethodName(), driver), result.getMethod().getMethodName());
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

Temel Sınıf:

public ThreadLocal<WebDriver> webdriver = new ThreadLocal<WebDriver>();


@BeforeClass
public void setup() {
    Reporter.log("@@@@@ Setup @@@@@",true);
    ExtentReports extent = ExtentReport.extentReportGenerator();
}


@BeforeMethod
public void startBrowser() {
    WebDriverFactory webDriverFactory = new WebDriverFactory();
    webDriverFactory.setDriver();
    webdriver.set(webDriverFactory.getDriver());
    webdriver.get().get(baseURL);

TestCase Sınıfı:

@Test(dataProvider = "jsonData", dataProviderClass = TestData.class)
public void  testAggregator(String jSon) throws ParseException {
    extent.createTest("Test The Welcome Page");
    welcomePageImpl = new WelcomePageImpl(webdriver.get());
    welcomePageImpl.getAggregatorRequest(webdriver.get(),jSon);
}

İstisna:

java.lang.NullPointerException
    at main.java.com.shoppingCart.testCases.BaseClass.getScreenShotPath(BaseClass.java:71)
    at main.java.com.shoppingCart.utilities.Listeners.onTestSuccess(Listeners.java:37)
    at org.testng.internal.TestListenerHelper.runTestListeners(TestListenerHelper.java:70)
    at org.testng.internal.TestInvoker.runTestResultListener(TestInvoker.java:219)
    at org.testng.internal.TestInvoker.invokeMethod(TestInvoker.java:651)
    at org.testng.internal.TestInvoker.invokeTestMethod(TestInvoker.java:173)
    at org.testng.internal.MethodRunner.runInSequence(MethodRunner.java:46)
    at org.testng.internal.TestInvoker$MethodInvocationAgent.invoke(TestInvoker.java:816)
    at org.testng.internal.TestInvoker.invokeTestMethods(TestInvoker.java:146)
    at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:146)
    at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:128)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
java selenium selenium-webdriver testng
2021-11-24 03:29:52
1

En iyi cevabı

0

Sorun, test kodunuzdadır.

onSuccess TestNG tarafından test yönteminizle aynı iş parçacığında çalıştırılması garanti edilmez.

Bunu düzeltmek için lütfen dinleyicinizi kullanmak üzere yeniden düzenleyin beforeInvocation ve afterInvocation TestNG dinleyici arabirimi üzerinden org.testng.IInvokedMethodListener çünkü bunun aynı iş parçacığında çalışması garanti edilir (hatırlayabildiğim kadarıyla).

2021-11-24 06:30:25

Evet denedim ve her yöntem için test oluşturduğunu öğrendim. Tek @ Test yöntemini alabileceği ve başarısız olduğunda ekran görüntüleri oluşturabileceği veya muhabirdeki @ test yöntemi başlığının altından geçebileceği bir şey istiyorum.
Alvin

buldum sorunu.
Alvin

Diğer dillerde

Bu sayfa diğer dillerde

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................