虽然我在调用quit()之后实例化了驱动程序,但仍然得到以下内容在调用quit()之后无法使用FirefoxDriver

时间:2016-03-24 16:19:35

标签: selenium selenium-webdriver

我正面临“在quit()被称为”问题后,FirefoxDriver无法使用。请帮助。

在我的框架中,我使用了WebDriver驱动变量作为static。在每个测试用例的末尾,我执行了driver.quit()方法。 在下一个测试用例的开头,我再次使用firefoxdriver()的新实例更新了驱动程序变量。但是如果我尝试使用驱动程序变量来查找任何webelement,则驱动程序变量返回null。这是我的代码的简化版本。

public class Frame
{
    private static WebDriver driver;

    public static WebDriver openUrl(String URL)
    {
        driver = new FirefoxDriver();
        driver.get(URL);
        return driver;
    }

    public static WebDriver returnWebDriverInstance()
    {
        System.out.println("I am called");
        return driver;
    }
}

public class javaCheck2
{
    private static WebDriver driver = Frame.returnWebDriverInstance();

    static
    {
        // driver = Frame.returnWebDriverInstance();
        System.out.println(driver + " in static");
    }

    public static void pageMaxim()
    {
        System.out.println(driver + " in page maxim");
        driver.manage().window().maximize();
    }

    public static void pagesource()
    {
        System.out.println(driver + " in page source");
        driver.getPageSource();
    }
}

@Test
public class TestCase1
{
    public void TC01()
    {
        WebDriver driver = Frame.openUrl("https://www.google.com");
        javaCheck2.pagesource();
        driver.quit();

        // driver.close();
    }
}

@Test
public class TestCase2
{
    public void TC02()
    {
        WebDriver driver = Frame.openUrl("https://www.gmail.com");
        javaCheck2.pageMaxim();
        driver.quit();
        // driver.close();
    }
}

控制台输出:

I am called
FirefoxDriver: firefox on MAC (6df8103b-673f-954f-b20d-72fa4b9181b8) in static
FirefoxDriver: firefox on MAC (6df8103b-673f-954f-b20d-72fa4b9181b8) in page source
FirefoxDriver: firefox on MAC (null) in page maxim

===============================================

Suite

Total tests run: 2, Failures: 1, Skips: 0

===============================================

请帮忙

1 个答案:

答案 0 :(得分:0)

问题是var names = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase) { { "Alice", "Alice" }, { "Bob", "Bob" }, { "Charles", "Charles" } }; Console.WriteLine(names["alice"]); // Alice Console.WriteLine(names["aLICe"]); // Alice 的静态javaCheck2实例设置一次(在静态初始化块中)并且从不重置,因此只要您调用driver基础会话(虽然不是null)变得无效。永远不会重置,这就是为什么一旦尝试再次使用驱动程序实例就会出现故障。

让这个工作(没有大型重构)的最简单方法是:

quit()