首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >tearDown未被初始化

tearDown未被初始化
EN

Stack Overflow用户
提问于 2019-02-20 15:10:34
回答 2查看 428关注 0票数 1

我有一个Java自动化脚本。我有一个有效的设置方法,但由于某种原因,我的tearDown没有被读取。

当我运行自动化测试时,我似乎有两个问题

  1. 如果失败,则测试多次运行,浏览器窗口保持打开。
  2. 即使测试通过,浏览器窗口也不会关闭,这会使事情变得非常混乱。

我还没有为实际测试添加任何功能文件,因为我认为问题在设置中,但我非常乐意这样做。

我怀疑这两个问题是有联系的,但我不知道在哪里或如何。

这是我的SeleniumSetUp课

代码语言:javascript
复制
public class SeleniumSetup {

    protected WebDriver driver;

    public SeleniumSetup(WebDriver driver)
    {

    }

    public SeleniumSetup() {

    }

    public void prepareBrowserForSelenium() {

//      setup();
        if(DriverSingleton.getDriver() == null)
        {
            setup();    
        }
        else
        {
            driver = DriverSingleton.getDriver();
        }

    }

    public void setup() {
        System.setProperty("webdriver.chrome.driver", "C:\\Users\\Selenium and drivers\\chromedriver.exe");
        driver = new ChromeDriver();
        driver.get("http://the-internet.herokuapp.com/");
        driver.manage().window().maximize();
        System.out.println("Set up running");

    }

    public void tearDown() {

        driver.quit();
        System.out.println("Tear down running");
    }

}

我已经添加了一个Println,并且可以看到,在运行我的脚本时,它从未被返回。

这是我的基本页面;

代码语言:javascript
复制
package pages;

import org.openqa.selenium.WebDriver;

public class BasePage {

    protected WebDriver driver;

    public BasePage(WebDriver driver) {
        this.driver = driver;
    }

}

还有我的司机

代码语言:javascript
复制
package support;

import org.openqa.selenium.WebDriver;

public class DriverSingleton {

    private static WebDriver driver;

    public DriverSingleton () {

    }

    public static WebDriver getDriver() {
        return driver;
    }

    public static void setDriver (WebDriver driver) {
        DriverSingleton.driver = driver;
    }

}

任何帮助都将不胜感激。

EN

回答 2

Stack Overflow用户

发布于 2019-02-20 15:52:57

似乎您的DriverSingleton的驱动程序从未初始化过,而且在SeleniumSetup类的SeleniumSetup方法中,SeleniumSetup的驱动程序被初始化并在每次运行代码时使用,将tearDown()放在setup()的末尾,浏览器窗口就会关闭。

代码语言:javascript
复制
System.setProperty("webdriver.chrome.driver", "C:\\Users\\Selenium and drivers\\chromedriver.exe");
driver = new ChromeDriver();
driver.get("http://the-internet.herokuapp.com/");
driver.manage().window().maximize();
System.out.println("Set up running");
   // <<------your test scenario should be placed here 
tearDown();
票数 0
EN

Stack Overflow用户

发布于 2019-02-20 16:35:41

尝试使用junit(j5 )接口扩展驱动程序类,并覆盖前后方法,下面是一个简单的示例,使用一些代码:

代码语言:javascript
复制
import org.junit.jupiter.api.extension.AfterAllCallback;
import org.junit.jupiter.api.extension.AfterTestExecutionCallback;
import org.junit.jupiter.api.extension.BeforeAllCallback;
import org.junit.jupiter.api.extension.BeforeTestExecutionCallback;
import org.junit.jupiter.api.extension.ExtensionContext;

public class Driver implements AfterTestExecutionCallback, BeforeTestExecutionCallback, BeforeAllCallback, AfterAllCallback {

    protected WebDriver driver;

    @Override
    public void beforeAll(ExtensionContext context) throws Exception {
        System.setProperty("webdriver.chrome.driver", "C:\\Users\\Selenium and drivers\\chromedriver.exe");
        driver = new ChromeDriver();
        driver.get("http://the-internet.herokuapp.com/");
        driver.manage().window().maximize();
        System.out.println("Set up running");
    }

    @Override
    public void afterAll(ExtensionContext context) throws Exception {
        driver().quit();
    }

    @Override
    public void beforeTestExecution(ExtensionContext context) throws Exception {
        //whatever steps you need before EACH test, like navigate to homepage etc...
    }

    @Override
    public void afterTestExecution(ExtensionContext context) throws Exception {
        // steps do to after each test, best practice is to clear everything:
        driver.manage().deleteAllCookies();
        driver.executeScript("window.sessionStorage.clear()");
        driver.executeScript("window.localStorage.clear()");
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54789492

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档