保留Firefox和Chrome浏览器中的缓存 - Selenium WebDriver

16

目前我们的网页应用程序在没有缓存的情况下需要大约3分钟才能完全加载,有缓存时只需要10秒钟。当我通过WebDriver打开应用程序时,它需要大约3分钟才能加载,也就是说没有使用缓存。我在Firefox和Chrome浏览器上观察到了这一点。不确定如何启用驱动程序以使用缓存而不是每次打开应用程序时从服务器加载每个文件。

以下是我尝试过的事情。 1. 在浏览器设置中禁用退出时清除缓存。 2. 将'applicationCacheEnabled'所需功能设置为'true'

DesiredCapabilities cap = DesiredCapabilities.firefox();

cap.setCapability("applicationCacheEnabled", "true");

WebDriver d = new FirefoxDriver(cap)

但似乎什么都没有用。请告诉我如何让webdriver使用缓存。

2个回答

8
问题在于,selenium每次启动时都会将一个新的(firefox/chrome)配置文件复制到临时目录,并使用它来启动firefox/chrome。 然而,始终使用相同的配置文件对于您的测试实例是可能的。我认为这样可以更快地使其工作起来。
对于Firefox,您只需要执行以下步骤:
1. 在selenium firefox实例中加载您的Web应用程序,并在之后不要关闭它(不要使用driver.close())。
2. 然后转到帮助->故障排除信息,打开配置文件夹下的文件夹。
3. 将其内容复制到靠近您的测试代码的新文件夹中。
4. 在您的测试代码中加载保存的配置文件。您可以按照以下方式进行操作:
FirefoxProfile profile = new FirefoxProfile(new File("profile/folder/path"));                  
WebDriver driver = new FirefoxDriver(profile); 

我认为你可以在Chrome浏览器中类比地完成这个操作。

1
你知道如何使用https://github.com/facebook/php-webdriver吗? - gouchaoer

0

@CacheLookup注释对于一旦加载后不会更改的元素非常有用。这些类型的元素构成了网页上大部分的元素。因此,对于这些元素,由于它们在测试执行期间不会更改,您应该使用@Cachelookup注释来提高测试速度。

请尝试以下代码:

@FindBy(name="username")
@CacheLookup
private WebElement userName;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接