Karşıya bakıyorum "FirefoxDriver, quit() çağrıldıktan sonra kullanılamaz" sorunu .Lütfen yardım .quit() çağrısı yaptıktan sonra sürücüyü başlatmış olmama rağmen yine de aşağıdakileri alıyorum FirefoxDriver, quit() çağrıldıktan sonra kullanılamıyor
Çerçevemde, WebDriver sürücü değişkenini statik olarak kullandım. Her bir test kutusunun sonunda, driver.quit() yöntemini çalıştırdım. Bir sonraki testin başlangıcında, sürücü değişkenini yeni firefoxdriver örneği ile tekrar güncelledim(). Ancak, herhangi bir webelement bulmak için sürücü değişkenini kullanmaya çalışırsam, sürücü değişkeni null. İşte kodumun basitleştirilmiş bir versiyonu. Konsolu
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();
}
}
Çıktı:
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
===============================================
. Kodun daha okunaklı bir şeye yeniden kodlanmasının sorunun çözüleceğinden% 99 eminim (bu 2 basit test, ama bunun yarısını çözmek için biraz zaman aldı). "Global" bir sürücü değişkeniniz varsa, yöntemlerde de yerel kopyalar oluşturmanıza gerek yoktur; diğer taraftan, emin olmak istiyorsanız, yerelDriver veya driver2 veya başka bir şey gibi başka bir şey arayın. – skandigraun
Frame sınıfında statik WebDriver sürücüsü private.So Bu özel statikin bir kopyasını, sınıfın dışından sürücü üyesi değişkenine doğrudan erişemediğim yöntemlerde almam gerekir. – Coder