java - 调用 quit() 后无法使用 WebDriver FirefoxDriver

标签 java webdriver selenium-webdriver

我在获取正确的驱动程序实例时遇到问题。 以下是我的设置

public class SeleniumBase{
    public static WebDriver  driver;
      public static void setUp(url,browser,port){
        driver = new FirefoxDriver();
      }
      public static void tearDown(){      
        driver.manage().deleteAllCookies();
        driver.close();
        driver.quit();         
      }
    }

public class BuildTest extends SeleniumBase{

    @BeforeClass
        public static void seleniumSetup(){
        try{
            // read properties
            url = prop.getProp("baseUrl");
            browser = prop.getProp("browser");
            port = prop.getProp("port");
            }
            SeleniumBase.setUp(url,browser,port);
            waitForLoginPage();
            App.login();
        }
    @AfterClass
        public static void seleniumTearDown(){
            App.logOut();
            SeleniumBase.tearDown();
        }
}

@RunWith(Suite.class)
    @Suite.SuiteClasses(
            {                                               
                Test1.class,
                Test2.class
            })

public class SmokeSuite {


}

现在,对于 Test1.class,一切正常,但是当从套件中调用 Test2.class 时,会使用 setUp 方法创建新的驱动程序实例,但 App.Login() 会抛出错误,提示 "The FirefoxDriver cannot be在调用 quit() 之后使用”

我的设置/拆卸过程中有什么问题吗?

最佳答案

正如对您问题的评论已经提到的,您的 setUp()tearDown() 方法以及您的 WebDriver 实例是 < strong>static。所以一旦你调用了driver.quit(),你的驱动就不能再使用了。需要获取新的驱动程序。

但是,您不使用 JUnit 的 @Before@After 注释,而是使用 @BeforeClass@AfterClass。所以我猜你在 Test2 类中有多个测试,驱动程序在第一个测试后退出,并且在第二个测试前没有重新初始化。

最好使 WebDriversetUp()tearDown 不是静态的,并使用 @Before @After 在你的测试类中。然后你的问题应该消失了。

关于java - 调用 quit() 后无法使用 WebDriver FirefoxDriver,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20477743/

相关文章:

java - Angular 元素定位

Python - 断言页面中不应存在的文本字段

selenium - 如何避免 WebDriver 在等待 Google Ads 或 Google Analytics 加载时卡住?

c# - 在 SpecFlow 测试中使用 ChromeDriver

python - "TypeError: ' 模块 ' object is not callable"与 webdriver.chrome

Java SSL Streaming - 拆分应用程序数据

java - Spring 数据休息 : Limit sending values on Update method

java - 我无法使用 driver.findElement(By.xpath()); 找到具有 xpath 的 Web 元素

java - JAVA 中带有 ResultSet 参数的 SELECT 查询

java - 使用 JSON 作为参数的非托管扩展