Использование определенного профиля Firefox в Selenium WebDriver в C # - PullRequest
11 голосов
/ 30 сентября 2011

Я пытаюсь использовать профиль, который я уже настроил для Firefox с селеном 2, но нет документации для C #. Код, который я попытался сделать, выглядит следующим образом:

FirefoxProfileManager profileManager = new FirefoxProfileManager();
FirefoxProfile profile = profileManager.GetProfile(profileName);
driver = new FirefoxDriver(profile);

Код, который я видел, который можно сравнить в Java, использует ProfilesIni вместо FirefoxProfileManager, но он недоступен в C #. При такой настройке драйвера используемый профиль селена имеет все настройки по умолчанию вместо настроек, указанных в профиле, на который я пытаюсь указать.

Я не уверен, что использую правильные методы для получения профиля, но если кто-то использовал Selenium 2 с C #, любая информация будет полезна.

Ответы [ 6 ]

6 голосов
/ 05 марта 2013

Мы используем такой метод для загрузки профиля Firefox по умолчанию (вы можете создать собственный профиль и загрузить его):

private IWebDriver driver;  
string pathToCurrentUserProfiles = Environment.ExpandEnvironmentVariables("%APPDATA%") + @"\Mozilla\Firefox\Profiles"; // Path to profile
string[] pathsToProfiles = Directory.GetDirectories(pathToCurrentUserProfiles, "*.default", SearchOption.TopDirectoryOnly);
if (pathsToProfiles.Length != 0)
{
     FirefoxProfile profile = new FirefoxProfile(pathsToProfiles[0]);
     profile.SetPreference("browser.tabs.loadInBackground", false); // set preferences you need
     driver = new FirefoxDriver(new FirefoxBinary(), profile, serverTimeout);
}
else
{
     driver = new FirefoxDriver();
}
3 голосов
/ 27 марта 2012

У нас была та же проблема, что профиль не загружался.Проблема в FirefoxProfile (строка 137).Он ищет только user.js, а профиль из Firefox на самом деле prefs.js

137 >> Файл prefsInModel = новый файл (модель, "user.js");

Решение проблемы:переименуйте prefs.js -> user.js

1 голос
/ 01 декабря 2015

Следующее сработало для меня. Мне пришлось специально установить предпочтение «webdriver.firefox.profile», чтобы заставить его работать.

        var allProfiles = new FirefoxProfileManager();

        if (!allProfiles.ExistingProfiles.Contains("SeleniumUser"))
        {
            throw new Exception("SeleniumUser firefox profile does not exist, please create it first.");
        }
        var profile = allProfiles.GetProfile("SeleniumUser");

        profile.SetPreference("webdriver.firefox.profile", "SeleniumUser");

        WebDriver = new FirefoxDriver(profile);
0 голосов
/ 14 июля 2014

Вроде бы с профилем роуминга, а не с локальным профилем.

string path = @ "C: \ Users \ имя пользователя \ AppData \ Roaming \ Mozilla \ Firefox \ Profiles \ myi5go1k.default";FirefoxProfile ffprofile = новый FirefoxProfile (путь);Драйвер = новый FirefoxDriver (ffprofile);

0 голосов
/ 22 мая 2012

Я также столкнулся с той же проблемой, и после поиска и проб разных комбинаций я смог заставить Selenium загружать определенный профиль при использовании RemoteWebDriver.

Конфигурация сетки

Я запускаю HUB с помощью командного файла, содержащего следующее

"C:\Program Files (x86)\Java\jre6\bin\java.exe" -jar C:\Downloads\Selenium\selenium-server-standalone-2.20.0.jar -role hub -maxSession 50 -Dwebdriver.firefox.profile=Selenium

Я запускаю один или несколько узлов, используя пакетный файл, содержащий следующее (каждый узел имеет уникальный номер порта):

"C:\Program Files (x86)\Java\jre6\bin\java.exe" -jar selenium-server-standalone-2.20.0.jar -role node -hub http://127.0.0.1:4444/grid/register -browser browserName=firefox,platform=WINDOWS,version=11.0,maxInstances=2 -maxSession 2 -port 5555 -Dwebdriver.firefox.profile=Selenium

Ключ здесь - последняя часть этих команд, которая должна соответствовать имени созданного вами пользовательского профиля.

Код для создания экземпляра WebDriver

private readonly Uri _remoteWebDriverDefaultUri = new Uri("http://localhost:4444/wd/hub/");

private IWebDriver CreateFireFoxWebDriver(Uri remoteWebDriverUri)
{
    var desiredCapabilities = new DesiredCapabilities();

    desiredCapabilities.SetCapability(CapabilityType.BrowserName, "firefox");
    desiredCapabilities.SetCapability(CapabilityType.Platform, new Platform(PlatformType.Windows));
    desiredCapabilities.SetCapability(CapabilityType.Version, "11.0");

    var drv = new RemoteWebDriver(remoteWebDriverUri ?? _remoteWebDriverDefaultUri, desiredCapabilities);

    return drv;
}

ПРИМЕЧАНИЕ: Возможности должны соответствовать тем из узлов, которые вы используете в сетке.

Затем вы можете вызвать этот метод, передавая Uri хаба, или значение null по умолчанию для localhost.

0 голосов
/ 07 октября 2011

У меня та же проблема, это не дубликат.

Я использую следующее, которое работает

private IWebDriver Driver;

[Setup]
public void SetupTest()
{
string path = @"C:\Users\username\AppData\Local\Mozilla\Firefox\Profiles\myi5go1k.default";
FirefoxProfile ffprofile = new FirefoxProfile(path);
Driver = new FirefoxDriver(ffprofile);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...