我有一个 Java 自动化脚本。我有一个有效的设置方法,但由于某种原因我的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;
}
}
任何帮助将不胜感激。
最佳答案
看来您的DriverSingleton的驱动程序从未初始化过,并且在SeleniumSetup类的setup()
方法中,每次运行代码时都会初始化并使用SeleniumSetup的驱动程序,将tearDown()
放在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");
// <<------your test scenario should be placed here
tearDown();
关于java - 拆解未初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54789492/