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 和其他會話數據會在每次頁面加載時保持不變。
了解這些差異使我們能夠根據測試的需要選擇最佳方法。