Sự khác biệt giữa những điều này là gì
Webdriver.Close()
Webdriver.Quit()
Webdriver.Dispose()
Cái nào sẽ được sử dụng và khi nào?
Sự khác biệt giữa những điều này là gì
Webdriver.Close()
Webdriver.Quit()
Webdriver.Dispose()
Cái nào sẽ được sử dụng và khi nào?
Câu trả lời:
Đây là một câu hỏi hay mà tôi đã thấy mọi người sử dụng Close () khi họ không nên. Tôi đã xem mã nguồn của Selenium Client & WebDriver C # Bindings và tìm thấy như sau.
webDriver.Close()
- Đóng cửa sổ trình duyệt mà trình điều khiển tập trung vào webDriver.Quit()
- Gọi vứt bỏ () webDriver.Dispose()
Đóng tất cả các cửa sổ trình duyệt và kết thúc phiên một cách an toànMã dưới đây sẽ loại bỏ đối tượng trình điều khiển, kết thúc phiên và đóng tất cả các trình duyệt đã mở trong quá trình kiểm tra xem thử nghiệm có bị lỗi hay không.
public IWebDriver Driver;
[SetUp]
public void SetupTest()
{
Driver = WebDriverFactory.GetDriver();
}
[TearDown]
public void TearDown()
{
if (Driver != null)
Driver.Quit();
}
Tóm lại, đảm bảo rằng Quit () hoặc Dispose () được gọi trước khi thoát khỏi chương trình và không sử dụng phương thức Đóng () trừ khi bạn chắc chắn về những gì bạn đang làm.
Lưu ý
Tôi đã tìm thấy câu hỏi này khi cố gắng tìm ra một vấn đề liên quan tại sao máy ảo của tôi hết dung lượng ổ cứng. Hóa ra một ngoại lệ đã khiến Quit () hoặc Dispose () không được gọi mỗi lần chạy, sau đó khiến thư mục appData lấp đầy ổ cứng. Vì vậy, chúng tôi đã sử dụng phương thức Quit () một cách chính xác nhưng mã không thể truy cập được. Tóm tắt đảm bảo tất cả các đường dẫn mã sẽ dọn sạch các đối tượng không được quản lý của bạn bằng cách sử dụng các mẫu an toàn ngoại lệ hoặc triển khai IDis Dùng
Ngoài ra,
trong trường hợp RemoteDriver gọi Quit () hoặc Dispose () cũng sẽ đóng phiên trên Máy chủ Selenium. Nếu phiên không đóng, các tệp nhật ký cho phiên đó vẫn còn trong bộ nhớ.
Quit()
là một chuyển hướng tớiDispose()
Close()
- Nó được sử dụng để đóng trình duyệt hoặc trang hiện đang tập trung.
Quit()
- Nó được sử dụng để tắt phiên bản trình điều khiển web hoặc hủy phiên bản trình điều khiển web (Đóng tất cả các cửa sổ).
Dispose()
- Tôi không biết phương pháp này.
Quit
và Dispose
nên là từ đồng nghĩa với nhau. Nói cách khác, Quit
các cuộc gọi Dispose
.
driver.close
và driver.quit
là hai phương pháp khác nhau để đóng phiên trình duyệt trong Selenium WebDriver. Hiểu cả hai và biết khi nào nên sử dụng từng phương pháp là điều quan trọng trong quá trình thực hiện kiểm tra của bạn. Do đó, tôi đã cố gắng làm sáng tỏ cả hai phương pháp này.
driver.close
- Phương pháp này đóng cửa sổ trình duyệt nơi đặt tiêu điểm. Mặc dù cái tên quen thuộc đối với phương pháp này, WebDriver
không phải thực hiện các AutoCloseable
giao diện .
driver.quit
- Phương thức này về cơ bản gọi driver.dispose
một phương thức nội bộ hiện đang đóng tất cả các cửa sổ trình duyệt và kết thúc phiên WebDriver một cách duyên dáng.
driver.dispose
- Như đã đề cập trước đây, là một phương thức nội bộ của WebDriver đã bị bỏ âm thầm theo một câu trả lời khác - Cần xác minh. Phương pháp này thực sự không có trường hợp sử dụng trong quy trình kiểm tra bình thường vì một trong các phương pháp trước đó sẽ hoạt động với hầu hết các trường hợp sử dụng.
Trường hợp sử dụng giải thích: Bạn nên sử dụng driver.quit
bất cứ khi nào bạn muốn kết thúc chương trình. Nó sẽ đóng tất cả các cửa sổ trình duyệt đã mở và chấm dứt phiên WebDriver. Nếu bạn không sử dụng driver.quit
vào cuối chương trình, phiên WebDriver sẽ không đóng đúng cách và các tệp sẽ không bị xóa khỏi bộ nhớ. Điều này có thể dẫn đến lỗi rò rỉ bộ nhớ.
Giải thích trên sẽ giải thích sự khác biệt giữa driver.close
và driver.quit
các phương thức trong WebDriver. Tôi hy vọng bạn thấy nó hữu dụng.
Trang web sau đây có một số mẹo hay về kiểm tra selen: Liên kết
quit()
: Thoát khỏi trình điều khiển này, đóng mọi cửa sổ liên quan đã mở.
close()
: Đóng cửa sổ hiện tại, thoát khỏi trình duyệt nếu đó là cửa sổ cuối cùng hiện đang mở.
close (): - Giả sử bạn đã mở nhiều cửa sổ trình duyệt có cùng phiên bản trình điều khiển, bây giờ gọi close () trên phiên bản trình điều khiển sẽ đóng cửa sổ hiện tại mà phiên bản trình điều khiển được trỏ đến. Nhưng phiên bản trình điều khiển vẫn còn trong bộ nhớ và có thể được sử dụng để xử lý các cửa sổ trình duyệt mở khác.
Thoát (): - Nếu bạn gọi thoát () trên phiên bản trình điều khiển và có một hoặc nhiều cửa sổ trình duyệt mở, nó sẽ đóng tất cả các cửa sổ trình duyệt đang mở và phiên bản trình điều khiển là rác được thu thập tức là xóa khỏi bộ nhớ. Vì vậy, bây giờ bạn không thể sử dụng cá thể trình điều khiển này để thực hiện thao tác khác sau khi gọi thoát () trên nó. Nếu bạn làm điều đó sẽ ném một ngoại lệ.
dispose (): - Tôi không nghĩ có một phương thức xử lý cho một cá thể WebDriver.
Bạn có thể vào liên kết tài liệu java chính thức của selenium này để tham khảo.
close () là một lệnh webdo đóng cửa sổ trình duyệt hiện đang được tập trung. Mặc dù cái tên quen thuộc đối với phương pháp này, WebDriver
không phải thực hiện các AutoCloseable
giao diện .
Trong quá trình tự động hóa, nếu có nhiều hơn một cửa sổ trình duyệt được mở, thì lệnh close () sẽ chỉ đóng cửa sổ trình duyệt hiện tại đang tập trung tại thời điểm đó. Các cửa sổ trình duyệt còn lại sẽ không bị đóng. Đoạn mã sau có thể được sử dụng để đóng cửa sổ trình duyệt hiện tại:
Thoát () là một lệnh webdo gọi phương thức driver.dispose, lần lượt đóng tất cả các cửa sổ trình duyệt và chấm dứt phiên WebDriver. Nếu chúng tôi không sử dụng thoát () vào cuối chương trình, phiên WebDriver sẽ không được đóng đúng cách và các tệp sẽ không bị xóa khỏi bộ nhớ. Điều này có thể dẫn đến lỗi rò rỉ bộ nhớ.
Nếu quá trình Tự động hóa chỉ mở một cửa sổ trình duyệt duy nhất, các lệnh close () và exit () hoạt động theo cùng một cách. Cả hai sẽ khác nhau về chức năng của chúng khi có nhiều hơn một cửa sổ trình duyệt được mở trong Tự động hóa.
Đối với giới thiệu ở trên: bấm vào đây
Lệnh Vứt bỏ () nên gọi Quit () và nó xuất hiện. Tuy nhiên, nó cũng có một vấn đề tương tự ở chỗ mọi hành động tiếp theo đều bị chặn cho đến khi PhantomJS được đóng bằng tay.
ref Liên kết
Sự khác biệt giữa driver.close () & driver.quito ()
driver.c Đóng - Nó đóng cửa sổ trình duyệt nơi đặt tiêu điểm.
driver.quito - Về cơ bản, nó gọi phương thức driver.dispose, lần lượt đóng tất cả các cửa sổ trình duyệt và kết thúc phiên WebDriver một cách duyên dáng.
Selenium WebDriver
WebDriver.Close()
Phương pháp này được sử dụng để đóng cửa sổ mở hiện tại. Nó đóng cửa sổ mở hiện tại mà trình điều khiển đã tập trung vào.
WebDriver.Quit()
Phương pháp này được sử dụng để phá hủy thể hiện của WebDriver. Nó đóng tất cả Windows Browser được liên kết với trình điều khiển đó và kết thúc phiên một cách an toàn. WebDriver.Quit () gọi Vứt bỏ.
WebDriver.Dispose()
Phương pháp này đóng tất cả các cửa sổ Trình duyệt và kết thúc phiên một cách an toàn