我有一个Java Automation脚本。我有一个可以使用的设置方法,但是由于某种原因,我的tearDown未被读取。
运行自动化测试时,我似乎有两个问题
我还没有为实际测试添加任何代码功能文件,因为我认为问题出在设置中,但非常高兴。
我怀疑这两个问题都有联系,但我无法理解在哪里或如何。
这是我的SeleniumSetUp类
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,并且可以看到运行脚本时永远不会返回它。
这是我的基本页面;
package pages;
import org.openqa.selenium.WebDriver;
public class BasePage {
protected WebDriver driver;
public BasePage(WebDriver driver) {
this.driver = driver;
}
}
还有我的司机
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;
}
}
任何帮助将不胜感激。
答案 0 :(得分:0)
似乎您的DriverSingleton的驱动程序从未初始化,并且在SeleniumSetup类的setup()
方法中,SeleniumSetup的驱动程序在每次运行代码时都会初始化并使用,将tearDown()
放在{的末尾{1}},您的浏览器窗口将关闭。
setup()
答案 1 :(得分:0)
尝试使用junit(j5 jupiter)接口扩展驱动程序类并覆盖before / after方法,这是使用一些代码的简单示例:
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()");
}
}