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

时间:2014-03-27 11:07:52

标签: google-chrome firefox caching selenium

目前,我们的Web应用程序大约需要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 个答案:

答案 0 :(得分:8)

问题是,selenium会将每个启动时的新(firefox / chrome)配置文件复制到临时目录,并使用它启动firefox / chrome。 但是,可以始终为测试实例使用相同的配置文件。 我认为这样可以让它更快地运作。

对于Firefox,您只需要执行以下步骤:
1.将您的webapp加载到selenium firefox实例中,之后不要关闭它(不是 driver.close(); )。
2.然后转到帮助 - >故障排除信息并打开配置文件夹下的文件夹。
3.将其内容复制到测试代码附近的新文件夹中 4.在测试代码中加载保存的配置文件。你可以这样做:

FirefoxProfile profile = new FirefoxProfile(new File("profile/folder/path"));                  
WebDriver driver = new FirefoxDriver(profile); 

我认为你可以用类似的铬做到这一点。

答案 1 :(得分:0)

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

尝试以下代码:

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