0

Я изучаю, как установить индивидуальный профиль с помощью 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()); 
} 
+0

Как вы называете это? Что такое 'methodName'? – SiKing

+0

Итак, у каждого теста есть отдельный профиль? Вы уверены, что все эти профили существуют? – SiKing

+0

Поскольку все эти тесты выполняются на удаленном компьютере, и эти профили не существуют, я хочу, чтобы он был создан «на лету» и назначил его драйверу. Невозможно создать каталог профиля и назначить его как профиль для каждого драйвера? – startedFromTheBottom

ответ

0

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

Если вы действительно хотите создать отдельные профили (может потребоваться установить некоторые плагины, такие как 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); 
+0

Как это повлияет на тесты, если мы запускаем несколько экземпляров RemoteWebdriver. Учитывая, что я не устанавливаю профиль вообще, будет ли каждый экземпляр драйвера хранить файлы cookie в собственном профиле по умолчанию или будет ли вероятность совместного использования файлов cookie? Если да, то как мне доказать, что файлы cookie разделяются или нет? – startedFromTheBottom

+0

Cookies не являются общедоступными! Поскольку Selenium создает «копию» профиля для каждого экземпляра. Вы можете протестировать это путем простого теста входа с разными учетными данными пользователя. – Surya

Смежные вопросы