[英]How to close all opened drivers in Selenium?
我需要關閉Selenium中所有打開的Chrome驅動程序。 我所有的方法都只關閉其中一種。 我需要同時關閉所有驅動程序的原因-在程序開始時,我不知道需要打開多少個驅動程序,因此我嘗試循環打開幾個具有相同驅動程序名稱的驅動程序。
我如何打開這些驅動程序:
WebDriver driver = new ChromeDriver();
driver.get(firstURL);
driver = new ChromeDriver();
driver.get(secondURL);
我如何嘗試關閉兩個驅動程序:
第一次嘗試:
driver.close();
第二次嘗試:
driver.quit();
第三次嘗試:
driver.close();
driver.close();
第四次嘗試:
driver.quit();
driver.quit();
即使您ChromeDriver()
分配了多個ChromeDriver()
對象,您的代碼中也只有一個WebDriver driver
。 因此,您可以使用driver.close()
或driver.quit();
關閉驅動程序一次driver.quit();
並且只有最新的窗口將被關閉,因為唯一的驅動程序已關閉,所有先前的窗口仍將保留(現在無法再聯系)。
您如何初始化驅動程序。 您是否初始化了多個驅動程序? 如果是這樣,則對所有驅動程序分別使用quit()
方法。 否則,只有driver.quit()
應該起作用。
編輯:
在每個新分配之前使用driver.quit()
。
driver.quit()將關閉所有(父級和子級)瀏覽器窗口並結束整個會話。 這應該工作正常。
首先讓我們看一下您的代碼:
WebDriver driver = new ChromeDriver();
driver.get(firstURL);
driver = new ChromeDriver();
driver.get(secondURL);
這是正在發生的事情:
從您的問題出發,目前尚不清楚您到底想完成什么。 您有幾種選擇:
@Before
方法中完成。 @After
方法完成此操作。 另一種選擇是您可能合法地需要多個瀏覽器。 您將需要跟蹤所有這些。
drivers
List
,每次打開一個新drivers
時,將其添加到該列表中。 我有幾個建議給你。
在您的帖子中,您說:
“ ...在程序開始時,我不知道需要打開多少個驅動程序,因此我嘗試循環打開幾個具有相同驅動程序名稱的驅動程序。”
這不是一個很好的方法,這就是原因:假設您有兩個WebDriver,每個都命名為“ driverX”。 您需要第一個驅動程序轉到“ www.google.com ”,並且您需要第二個驅動程序轉到“ www.yahoo.com ”。 因此,您的代碼如下所示:
driverX.get("www.google.com");
driverX.get("www.yahoo.com");
這成為一個問題,因為您實際上沒有將第一個WebDriver從Google重新路由到Yahoo,而是告訴第二個WebDriver去Yahoo。
這個問題有什么解決方案? 使用唯一的名稱(例如googleDriver
或yahooDriver
為每個WebDrivers命名。 然后,您的代碼將如下所示,並且您不應有任何沖突:
googleDriver.get("www.google.com");
yahooDriver.get("www.yahoo.com");
現在,我們為您的每個WebDriver賦予了唯一的名稱,我們可以分別引用它們。 很好,但是,某些應用程序要求我們一次引用其中的幾個。 這是ArrayList可以進入的地方。在下面的代碼中,我使用了ArrayList來解決您的原始問題。
ArrayList<WebDriver> activeDrivers = new ArrayList<>();
activeDrivers.add(googleDriver);
activeDrivers.add(yahooDriver);
for(WebDriver driver : activeDrivers){
if(driver.getCurrentUrl().equals("Some predefined exit page"){
driver.quit();
}
}
如果您仍然不理解或有任何疑問,請隨時發表評論。
@AfterMethod
public void tearDown(){
// Your Code
// At the End call
driver.close();
}
為了擴展Zachary的答案,假設您在測試環境中使用驅動程序,則可以:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.