java - 拆解未初始化

标签 java selenium automation

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

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

  1. 如果失败,则多次运行测试,并且浏览器窗口保持打开状态。
  2. 即使测试通过,浏览器窗口也永远不会关闭,这让事情变得非常困惑。

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

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

这是我的 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/

相关文章:

vba - 使用 VBA 单击网页上的“提交”按钮

Objective-C:自动化

exception - Webdriver 测试脚本断言失败后不停止

java - 如何在selenium RC中的java上使用Pattern.compile中的变量

python - 在 headless 模式下运行 Firefox 的正确方法(Selenium、Python)

c++ - Visual Studio 2010 + 视觉辅助 C++ : Are there any automated ways to create getters and setters?

java - 如何列出所有与maven不兼容的依赖版本?

java - HttpServletRequest getLocale 返回操作系统语言环境而不是浏览器语言环境

java - Java 中的简单 Esper 示例

java - @PostConstruct 模拟外部最终 bean