Nano Hash - криптовалюты, майнинг, программирование

Использование определенного профиля Firefox в Selenium WebDriver на C #

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

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

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

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


  • Возможный дубликат этого потока: stackoverflow.com/questions/2250486/ 01.10.2011
  • Это не повторяющийся поток, другой поток относится к Selenium RC и не запускает браузер. 15.03.2012
  • Удалось ли вам когда-нибудь найти решение этой проблемы? 01.12.2015

Ответы:


1

Мы используем такой метод для загрузки профиля 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();
}
05.03.2013
  • какая версия Selenium? Для 2.23.0 ничего не работает даже это. 20.04.2013
  • Совершенно логично. Пасиба за ответ. 24.04.2013
  • Этот код работал у меня с некоторыми незначительными изменениями. Спасибо 31.07.2015

  • 2

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

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

    Решение для взлома: переименовать prefs.js -> user.js

    26.03.2012
  • Сработал для меня, просто нужно убедиться, что вы находитесь в реальной папке профиля, не заархивируйте саму папку 12.01.2013

  • 3

    Следующее сработало для меня. Мне пришлось специально установить предпочтение «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);
    
    01.12.2015

    4

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

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

    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);
    }
    
    06.10.2011
  • Даже когда я создаю профиль в местоположении по умолчанию, Selenium webdriver все равно настаивает на использовании нового профиля. Я знаю, что путь правильный, веб-драйвер просто отказывается его использовать. Профиль отличный, я могу запустить firefox, используя профиль через диспетчер профилей. В тупике !! 15.03.2012
  • От отчаяния я обновил Selenium, это не сработало, поэтому я обновил FireFox, все равно без радости. Кто-нибудь знает, можно ли что-нибудь сделать с методом SetPreference? 15.03.2012
  • Та же проблема ... даже с profile.SetPreference("webdriver.firefox.profile", "SeleniumUser"); он не использует историю или сохраненные пароли SeleniumUser 08.07.2017

  • 5

    После использования вышеупомянутых ответов у меня не было результата, поэтому я попробовал следующий альтернативный способ:

    Сначала создайте желаемый профиль, набрав about: profiles в адресной строке Firefox.

    Во-вторых, код C #. Обратите внимание, что имя профиля, которое мы создали на первом шаге, передается в качестве аргумента.

    public IWebDriver driver { get; set; }
        
    public Selenium(String nombrePefil)
    {
        if (this.driver == null)
        {
            FirefoxOptions options = new FirefoxOptions();                     
    
            options.AddArgument("--profile " + nombrePefil);
    
            this.driver = new FirefoxDriver(options);                        
                        
        }
    }
    
    18.05.2021

    6

    Я также столкнулся с той же проблемой, и после поиска и опробования множества различных комбинаций мне удалось заставить 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.

    21.05.2012

    7

    Кажется, больше подходит для роумингового профиля, чем для локального.

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

    14.07.2014
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..