Jmeter与selenium webdriver插件 - 启动firefox会话,无需清理cookie /缓存

时间:2015-11-10 11:30:48

标签: selenium selenium-webdriver webdriver jmeter jmeter-plugins

我正在使用Jmeter 2.13和selenium webdriver插件。当我启动我的线程时,它打开一个新的firefox会话,清除所有cookie和缓存。在之前的一次会议中,我进行了持续近5分钟的同步,这使我在我的应用程序中获得了一些产品。我不想在每次启动线程时同步。

有没有办法在不清除cookie /缓存的情况下启动新的firefox会话?

2 个答案:

答案 0 :(得分:0)

如果我的猜测是正确的,那么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);

答案 1 :(得分:0)

查看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;
}

所以有两个选择:

  1. 获取插件源代码并修改配置文件初始化行,以使用您现有的配置文件:

    FirefoxProfile profile = new FirefoxProfile("/path/to/firefox/profile");
    

    有关如何找到当前配置文件目录的说明,请参阅Mozilla文档的How do I find my profile页面。

  2. 停止使用WebDriver Sampler并切换到JSR223 Sampler,它支持WebDriver Sampler所做的所有语言并提供完全控制(您必须自己编写所有代码来配置,启动和停止浏览器)