วิธีที่จะ WebDriver สำหรับของฉันเป็นนักฟังที่ชั้นเรียนเมื่อใช้"สาธารณะ ThreadLocal<WebDriver>webdriver=ใหม่ ThreadLocal<WebDriver>();"วิธีการ

0

คำถาม

ฉันจะ NullPointerException สำหรับของฉันเป็นนักฟังที่เป็น WebDriver. นี่เป็นเพราะฉันเคย ThreadLocal ของฉั WebDriver ในฐานเรียน? ถ้างั้นฉันจะทำให้การทดสอบคดีคนขับรถของสำหรับของฉันเป็นนักฟังที่เป็น onTestSuccess วิธีการ?

นี่คือของฉันเป็นนักฟังที่คลาส:

@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();
        }
    }

BaseClass:

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 นักเรียน:

@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);
}

ยกเว้น:

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

คำตอบที่ดีที่สุด

0

ปัญหามันอยู่ในสายเลือดของคุณทดสอบรหัส

onSuccess ไม่ใช่แน่นอนที่สุดโดย TestNG ต้องวิ่งอยู่ในที่เดียวกับเธรดเป็นของคุณทดสอบวิธีการ.

เพื่อแก้ไขเรื่องนี้ได้โปรด refactor ของคุณเป็นนักฟังที่จะใช้ beforeInvocation แล้ว afterInvocation ผ่านทางค TestNG เป็นนักฟังที่ส่วนติดต่อ org.testng.IInvokedMethodListener เพราะนั่นมันแน่นอนที่สุดที่จะหนีเดียวกันกับเธรด(เท่าที่ผมจำ).

2021-11-24 06:30:25

ใช่ฉันพยายามมันและเรียนรู้ว่ามันกำลังสร้างทดสอบสำหรับทุกวิธีการ. ฉันต้องการบางอย่างที่มันสามารถพาคนเดียว@วิธีการทดสอบและสร้าง screenshots เมื่อมันล้มเหลวหรือผ่านใต้@ทดสอบหัวเรื่องวิธีการอยู่ในพรอมผูรายงานขาว
Alvin

เจอเหมือนไม่มีปัญหาอยู่เลยสินะ
Alvin

ในภาษาอื่นๆ

หน้านี้อยู่ในภาษาอื่นๆ

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

ดังอยู่ในนี้หมวดหมู่

ดังคำถามอยู่ในนี้หมวดหมู่