Selenium WebDriver中get()和navigate()的区别

2023/06/07

1. 概述

Selenium WebDriver是允许我们测试网页的API。在这个简短的教程中,我们将了解WebDriver中get()和navigate()方法之间的区别。

2. 关于WebDriver

Selenium WebDriver API包含与不同Web浏览器交互的高级方法。使用此API,我们可以调用不同的操作,例如加载网页、单击链接、在DOM中搜索特定元素等等。

API中的两个方法get()和navigate()允许我们加载网页。虽然它们在名称上相似,但正如我们接下来将看到的,在行为上存在一些差异

3. get()方法

在WebDriver中加载网页的最简单方法是使用get()方法:

WebDriver driver = new ChromeDriver();
driver.get("https://www.taketoday.com/");

此代码创建一个新的Chrome WebDriver并加载Taketoday主页。值得注意的是,get()方法一直等到网页被认为已完全加载并准备好返回控制权。如果页面包含大量JavaScript或其他资源,则调用可能需要一段时间。

4. Navigate API

WebDriver API包括一组独立的导航函数。让我们看第一个:

WebDriver driver = new ChromeDriver();
driver.navigate().to("https://www.taketoday.com/");

从功能上讲,navigate().to()方法的行为与get()方法完全相同。事实上,它只是get()方法的别名,只是在远程Web浏览器中加载指定的URL。而且因为它只是get()的别名,所以在网页完全加载之前它也不会返回。

但是,navigate API具有get()方法所没有的其他功能。

首先,它跟踪浏览器历史记录并允许一次在页面之间移动:

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

navigate还允许我们刷新当前URL:

driver.navigate().refresh();

然而,最重要的是,每次我们使用navigate API时,它都会维护cookie。与get()方法在每次调用时丢弃会话状态不同,navigate()方法确实保持状态。

这意味着我们使用navigate API加载的每个页面都包含任何先前的cookie,这对于测试许多场景(例如登录和单页应用程序)是必需的。

5. 总结

在这篇快速文章中,我们了解了Selenium WebDriver API中get()和navigate()方法之间的区别。虽然get()更易于使用,但navigate()有两个主要优点。

首先,navigate()提供了用于导航历史页面以及刷新当前页面的附加方法。其次,它会维护它导航到的每个URL之间的状态,这意味着cookie和其他会话数据会在每次页面加载时都会持久保存。

了解这些差异使我们能够根据测试的需要选择最佳方法。

Show Disqus Comments

Post Directory

扫码关注公众号:Taketoday
发送 290992
即可立即永久解锁本站全部文章