【问题标题】:Jmeter with selenium webdriver plugin-start firefox session without cleaning cookies/cacheJmeter with selenium webdriver plugin-start firefox session without清理cookies/cache
【发布时间】:2015-11-10 11:30:48
【问题描述】:
我正在使用 Jmeter 2.13 和一个 selenium webdriver 插件。当我启动我的线程时,它会打开一个新的 Firefox 会话,并清除所有 cookie 和缓存。在之前的会话中,我进行了持续近 5 分钟的同步,这为我的应用程序带来了一些产品。我不想每次启动线程时都同步。
有什么方法可以在不清除 cookie/缓存的情况下启动新的 firefox 会话?
【问题讨论】:
标签:
selenium
selenium-webdriver
webdriver
jmeter
jmeter-plugins
【解决方案1】:
如果我的猜测是正确的,Selenium 就是打开 Firefox 实例的那个,请看下面。如果没有,请通过代码示例提供有关您设置的更多信息。
默认情况下,Selenium 以安全模式打开 Firefox,其中很多东西都被禁用(如扩展、本地存储设置等)。这也意味着您不会有任何缓存或 cookie。
您可以阅读有关此here 的更多信息。
要禁用此功能,您需要将 `about:config` 中的 `toolkit.startup.max_resumed_crashes` 设置键设置为 `-1`。
在 Selenium 代码方面,这可以通过在 FirefoxProfile 中设置首选项来实现。实现它的 C# 代码如下所示:
FirefoxProfile firefoxProfile = new FirefoxProfile();
firefoxProfile.SetPreference("toolkit.startup.max_resumed_crashes", "-1");
IWebDriver driver = new FirefoxDriver(firefoxProfile);
【解决方案2】:
查看 FirefoxDriverConfig.java 源代码,每次 Firefox 启动时插件都会创建新的配置文件:
FirefoxProfile createProfile() {
FirefoxProfile profile = new FirefoxProfile();
String userAgentOverride = getUserAgentOverride();
String ntlmOverride = getNtlmSetting();
if (StringUtils.isNotEmpty(userAgentOverride)) {
profile.setPreference("general.useragent.override", userAgentOverride);
}
if (StringUtils.isNotEmpty(ntlmOverride)) {
profile.setPreference("network.negotiate-auth.allow-insecure-ntlm-v1", true);
}
profile.setPreference("app.update.enabled", false);
addExtensions(profile);
setPreferences(profile);
return profile;
}
所以有两种选择:
-
获取插件源代码并修改配置文件初始化行以使用您现有的配置文件:
FirefoxProfile profile = new FirefoxProfile("/path/to/firefox/profile");
请参阅 Mozilla 文档的 How do I find my profile 页面,了解有关如何找到当前配置文件目录的说明。
停止使用 WebDriver Sampler 并改用 JSR223 Sampler,它支持 WebDriver Sampler 支持的所有语言并提供完全控制(您必须自己编写所有代码来配置、启动和停止浏览器)