Настройка отдельных профилей для параллельных тестов Selenium

Я изучаю, как установить индивидуальный профиль с помощью RemoteWebDriver. Я читал об этом в соседней теме.

http://stackoverflow.com/questions/12961037/parallel-execution-of-firefoxdriver-tests-with-profile-share-same-profile-copy

Я пытаюсь решить это следующим образом:

public static RemoteWebDriver getDriver(String methodName) throws MalformedURLException {

    String SELENIUM_HUB_URL = "http://localhost:4444/wd/hub";
    ThreadLocal<RemoteWebDriver> remoteWebDriver = null;

    File currentProfileFile = new File(methodName);
    //This is where it gives the error
    FirefoxProfile currentFireFoxProfile = new FirefoxProfile(currentProfileFile);
    DesiredCapabilities capabilities = DesiredCapabilities.firefox();
    capabilities.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
    capabilities.setCapability(FirefoxDriver.PROFILE, currentFireFoxProfile);       
    String proxy = System.getProperty("proxy");

    try {
        remoteWebDriver = new ThreadLocal<RemoteWebDriver>();
        remoteWebDriver.set(new RemoteWebDriver(new URL(SELENIUM_HUB_URL),
                capabilities));
        } catch (MalformedURLException e) {
            System.out.println("Please fix the RemoteDriverSetup.class");
        }

    remoteWebDriver.get().manage().window()
            .setSize(new Dimension(2880, 1524));
    remoteWebDriver.get().manage().timeouts()
            .pageLoadTimeout(10, TimeUnit.SECONDS);
    remoteWebDriver.get().manage().timeouts()
            .implicitlyWait(10, TimeUnit.SECONDS);

 return remoteWebDriver.get(); // Will return a thread-safe instance of the WebDriver

}

Я получаю следующую ошибку:

Time elapsed: 1.044 sec  <<< FAILURE!
org.openqa.selenium.firefox.UnableToCreateProfileException: Given model profile directory does      
not exist: TEST001

Обновление: я ввожу имя метода в класс BaseTest ниже

@BeforeMethod 
public void startTest(Method testMethod) {
        LOG.info("Starting test: " + testMethod.getName());
        this.driver             = WebDriverSetup.getDriver(testMethod.getName());
}

person startedFromTheBottom    schedule 22.12.2014    source источник
comment
Как ты это называешь? Что такое methodName?   -  person SiKing    schedule 23.12.2014
comment
То есть у каждого теста есть отдельный профиль? Вы уверены, что все эти профили существуют?   -  person SiKing    schedule 23.12.2014
comment
Поскольку все эти тесты выполняются на удаленке и этих профилей не существует, я хочу, чтобы он создавался на лету и назначался драйверу. Нельзя ли создать каталог профиля и назначить его в качестве профиля для каждого водителя?   -  person startedFromTheBottom    schedule 23.12.2014
comment
selenium по умолчанию создайте новый профиль, затем запустите тест. Если вам не нужно повторно использовать профиль, вам не нужно ничего делать. Если вы хотите назначить созданный профиль, вам нужно сначала создать их и использовать селен для их загрузки, как вы уже делали.   -  person Nguyen Vu Hoang    schedule 23.12.2014


Ответы (1)


Если вы не хотите ничего настраивать в своем профиле Firefox, лучше создать экземпляр веб-драйвера Firefox, НЕ предоставляя никаких сведений о профиле (как упоминал Нгуен).

Если вы действительно хотите создать отдельные профили (может потребоваться установка некоторых плагинов, таких как Firebug), в этом случае вы можете сделать это, не передавая имя файла, как показано ниже:

   FirefoxProfile currentFireFoxProfile = new FirefoxProfile();
   //Do some customization - add extension
   currentFireFoxProfile.addExtension(pathOfextensionToInstall);

   //or Setup some Firefox config. switch values
   currentFireFoxProfile.setPreference("browser.download.manager.showWhenStarting", false);
person Surya    schedule 23.12.2014
comment
Как это повлияет на тесты, если мы запускаем несколько экземпляров ‹Threadlocal› RemoteWebdriver. Учитывая, что я вообще не устанавливаю профиль, будет ли каждый экземпляр драйвера хранить файлы cookie в своем собственном профиле по умолчанию или будет ли возможность совместного использования файлов cookie? Если да, то как я должен доказать, что файлы cookie передаются или нет? - person startedFromTheBottom; 23.12.2014
comment
Куки не передаются! Поскольку Selenium делает копию профиля для каждого экземпляра. Вы можете проверить это с помощью простого теста входа в систему с разными учетными данными пользователя. - person Surya; 23.12.2014