Не удалось передать значение драйвера в тестовом аннотированном методе - PullRequest
1 голос
/ 13 марта 2020

У меня есть код ниже:

@AfterMethod()
public static void takeSnapShot(WebDriver webdriver, String fileWithPath) throws Exception {
    // Convert web driver object to TakeScreenshot
    TakesScreenshot scrShot = ((TakesScreenshot) webdriver);
    // Call getScreenshotAs method to create image file
    File SrcFile = scrShot.getScreenshotAs(OutputType.FILE);
    // Move image file to new destination
    File DestFile = new File(fileWithPath);
    // Copy file at destination
    FileUtils.copyFile(SrcFile, DestFile);
}

Я получаю ошибку ниже

Можно вставить только один из <ITestContext, XmlTest, Method, Object[], ITestResult> в аннотированный takeAnapShot @AfterMethod.

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

Помогите мне решить эту проблему или использовать другое решение.

1 Ответ

1 голос
/ 13 марта 2020

Это не сработает так, как вы пытаетесь. TestNG автоматически вызывает @AfterMethod() после каждого @Test аннотированного метода.

Вам нужно получить доступ к экземпляру драйвера в @AfterMethod. Сохраните экземпляр драйвера в переменной контекста, откуда вы его инициируете, и затем получите к нему доступ.

См. Код ниже:

@BeforeMethod()
public static void setup(ITestContext context) throws Exception {
    System.setProperty("webdriver.chrome.driver",
            "/Users/narendra.rajput/bulkpowders/bulk-powders/resources/drivers/chromedriver");
    WebDriver driver = new ChromeDriver();
    driver.get("https://www.wego.com.my/hotels");
    context.setAttribute("driver", driver);
}

@Test
public void test() {
    System.out.print("ok");
}

@AfterMethod()
public static void screenShot(ITestContext context) {

    WebDriver driver = (WebDriver) context.getAttribute("driver");
    System.out.print(driver.getCurrentUrl());
}

Вот как у вас после метода будет

@AfterMethod()
public static void screenShot(ITestContext context) {

    final String fileWithPath = "file_path";
    WebDriver driver = (WebDriver) context.getAttribute("driver");
    TakesScreenshot scrShot = ((TakesScreenshot) driver);
    File SrcFile = scrShot.getScreenshotAs(OutputType.FILE);
    File DestFile = new File(fileWithPath);
    FileUtils.copyFile(SrcFile, DestFile);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...