我正面临“在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
===============================================
请帮忙
答案 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()