Selenium WebDriver 中 get() 和 navigate() 的區別
一、簡介
Selenium WebDriver是允許我們測試網頁的 API。在這個簡短的教程中,我們將了解 WebDriver 中get()
和navigate()
方法之間的區別。
2. 關於WebDriver
Selenium WebDriver API 包含與不同網絡瀏覽器交互的高級方法。使用此 API,我們可以調用不同的操作,例如加載網頁、單擊鏈接、在 DOM 中搜索特定元素等等。
API 中的兩個方法get()
和navigate()
允許我們加載網頁。雖然它們在名稱上相似,但在行為上存在一些差異,我們將在接下來看到。
3. get()
方法
在 WebDriver 中加載網頁的最簡單方法是使用get()
方法:
WebDriver driver = new ChromeDriver();
driver.get("https://www.baeldung.com/");
此代碼創建一個新的 Chrome WebDriver 並加載 Baeldung 主頁。值得注意的是, get()
方法一直等到網頁被認為已完全加載並準備好返回控制權。如果頁麵包含大量 JavaScript 或其他資源,則調用可能需要一段時間。
4.導航API
WebDriver API 包括一組獨立的導航功能。讓我們看第一個:
WebDriver driver = new ChromeDriver();
driver.navigate().to("https://www.baeldung.com/");
在功能上, navigate().to()
方法的行為與get()
方法完全相同。事實上,它只是get()
方法的別名,只是在遠程 Web 瀏覽器中加載指定的 URL。而且因為它只是get()
的別名,所以在網頁完全加載之前它也不會返回。
但是,導航 API 具有get()
方法所提供的功能以外的其他功能。
首先,它跟踪瀏覽器歷史記錄並允許一次在頁面之間移動:
driver.navigate().forward();
driver.navigate().back();
導航界面還允許我們刷新當前 URL:
driver.navigate().refresh();
然而,最重要的是,每次我們使用 navigate API 時,它都會維護 cookies 。與get()
方法在每次調用時丟棄會話狀態不同, navigate()
方法確實保持狀態。
這意味著我們使用導航 API 加載的每個頁面都包含任何先前的 cookie。這對於測試許多場景(例如登錄和單頁應用程序)是必需的。
5.結論
在這篇快速文章中,我們了解了 Selenium WebDriver API 中get()
和navigate()
方法之間的區別。雖然get()
更易於使用,但navigate()
有兩個主要優點。
首先, navigate()
提供了用於導航歷史頁面以及刷新當前頁面的附加方法。其次,它會維護它導航到的每個 URL 之間的狀態,這意味著 cookie 和其他會話數據會在每次頁面加載時保持不變。
了解這些差異使我們能夠根據測試的需要選擇最佳方法。