
com.googlecode.jmeter.plugins.webdriver.config.FirefoxDriverConfig Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jmeter-plugins-webdriver Show documentation
Show all versions of jmeter-plugins-webdriver Show documentation
Custom plugins set for Apache JMeter
package com.googlecode.jmeter.plugins.webdriver.config;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import kg.apc.jmeter.JMeterPluginsUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.jmeter.gui.util.PowerTableModel;
import org.apache.jmeter.testelement.property.CollectionProperty;
import org.apache.jmeter.testelement.property.JMeterProperty;
import org.apache.jmeter.testelement.property.NullProperty;
import org.apache.jorphan.logging.LoggingManager;
import org.apache.log.Logger;
import org.openqa.selenium.Capabilities;
import org.openqa.selenium.firefox.FirefoxBinary;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.firefox.FirefoxProfile;
import org.openqa.selenium.remote.CapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;
public class FirefoxDriverConfig extends WebDriverConfig {
private static final Logger log = LoggingManager.getLoggerForClass();
private static final long serialVersionUID = 100L;
private static final String GENERAL_USERAGENT_OVERRIDE = "FirefoxDriverConfig.general.useragent.override";
private static final String ENABLE_USERAGENT_OVERRIDE = "FirefoxDriverConfig.general.useragent.override.enabled";
private static final String ENABLE_NTML = "FirefoxDriverConfig.network.negotiate-auth.allow-insecure-ntlm-v1";
private static final String EXTENSIONS_TO_LOAD = "FirefoxDriverConfig.general.extensions";
private static final String PREFERENCES = "FirefoxDriverConfig.general.preferences";
Capabilities createCapabilities() {
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(CapabilityType.PROXY, createProxy());
return capabilities;
}
FirefoxProfile createProfile() {
FirefoxProfile profile = new FirefoxProfile();
profile.setPreference("app.update.enabled", false);
String userAgentOverride = getUserAgentOverride();
if (StringUtils.isNotEmpty(userAgentOverride)) {
profile.setPreference("general.useragent.override", userAgentOverride);
}
String ntlmOverride = getNtlmSetting();
if (StringUtils.isNotEmpty(ntlmOverride)) {
profile.setPreference("network.negotiate-auth.allow-insecure-ntlm-v1", true);
}
addExtensions(profile);
setPreferences(profile);
return profile;
}
private void addExtensions(FirefoxProfile profile) {
JMeterProperty property = getProperty(EXTENSIONS_TO_LOAD);
if (property instanceof NullProperty) {
return;
}
CollectionProperty rows = (CollectionProperty) property;
for (int i = 0; i < rows.size(); i++) {
ArrayList row = (ArrayList) rows.get(i).getObjectValue();
String filename = ((JMeterProperty) row.get(0)).getStringValue();
try {
profile.addExtension(new File(filename));
} catch (IOException e) {
log.error("Failed to add extension " + filename, e);
}
}
}
private void setPreferences(FirefoxProfile profile) {
JMeterProperty property = getProperty(PREFERENCES);
if (property instanceof NullProperty) {
return;
}
CollectionProperty rows = (CollectionProperty) property;
for (int i = 0; i < rows.size(); i++) {
ArrayList row = (ArrayList) rows.get(i).getObjectValue();
String name = ((JMeterProperty) row.get(0)).getStringValue();
String value = ((JMeterProperty) row.get(1)).getStringValue();
switch (value) {
case "true":
profile.setPreference(name, true);
break;
case "false":
profile.setPreference(name, false);
break;
default:
profile.setPreference(name, value);
break;
}
}
}
@Override
protected FirefoxDriver createBrowser() {
return new FirefoxDriver(new FirefoxBinary(), createProfile(), createCapabilities());
}
public void setUserAgentOverride(String userAgent) {
setProperty(GENERAL_USERAGENT_OVERRIDE, userAgent);
}
public String getUserAgentOverride() {
return getPropertyAsString(GENERAL_USERAGENT_OVERRIDE);
}
public boolean isUserAgentOverridden() {
return getPropertyAsBoolean(ENABLE_USERAGENT_OVERRIDE);
}
public void setUserAgentOverridden(boolean userAgentOverridden) {
setProperty(ENABLE_USERAGENT_OVERRIDE, userAgentOverridden);
}
public void setNtlmSetting(boolean ntlm) {
setProperty(ENABLE_NTML, ntlm);
}
public String getNtlmSetting() {
return getPropertyAsString(ENABLE_NTML);
}
public void setExtensions(PowerTableModel model) {
CollectionProperty prop = JMeterPluginsUtils.tableModelRowsToCollectionProperty(model, EXTENSIONS_TO_LOAD);
setProperty(prop);
}
public void setPreferences(PowerTableModel model) {
CollectionProperty prop = JMeterPluginsUtils.tableModelRowsToCollectionProperty(model, PREFERENCES);
setProperty(prop);
}
public JMeterProperty getExtensions() {
return getProperty(EXTENSIONS_TO_LOAD);
}
public JMeterProperty getPreferences() {
return getProperty(PREFERENCES);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy