1. 引言

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()方法的别名,只需在远程浏览器中加载指定的URL。由于它是get()方法的别名,因此在网页完全加载之前也不会返回。

然而,导航API提供的能力超出了get()方法的范围。

首先,它记录浏览器历史,可以一次加载一个页面进行切换:

driver.navigate().forward();
driver.navigate().back();

导航接口还允许我们刷新当前URL:

driver.navigate().refresh();

最重要的是,每次使用导航API时,它都会保留cookies。与get()方法每次调用都会丢弃会话状态不同,navigate()方法确实会维护状态。

这意味着,使用导航API加载的每个页面都会包含之前的cookies。这对于测试诸如登录和单页应用等许多场景至关重要。

5. 总结

在这篇快速的文章中,我们探讨了Selenium WebDriver API中的get()navigate()方法的区别。虽然get()方法更易于使用,但navigate()方法有两大主要优势。

首先,navigate()提供了额外的方法来在历史页面间导航以及刷新当前页面。其次,它在导航到每个URL之间维护状态,意味着cookies和其他会话数据会在每次页面加载时被保留。

了解这些差异有助于根据测试需求选择最合适的方法。