Firefox открывает неправильный профиль с селеном c # - PullRequest
1 голос
/ 27 июня 2019

Я использую Селен 3.14 с Geckodriver 0.24, я использую следующий код для запуска существующих профилей, которые я уже создал для моих разных учетных записей.

FirefoxOptions firefoxOptions = new FirefoxOptions();
firefoxOptions.Proxy = pro; //my proxy object
firefoxOptions.AddArgument("-profile " + path); //path to the profile
FirefoxDriverService ffDriverService = FirefoxDriverService.CreateDefaultService();
ffDriverService.BrowserCommunicationPort = 2828;
PropertiesCollection.Driver = new FirefoxDriver(ffDriverService, firefoxOptions);

У меня есть несколько профилей, каждый из которых имеет свой прокси. Прямо сейчас, браузер запущен, и все работает очень хорошо для первого профиля, но как только я избавляюсь от браузера и запускаю новый с новым профилем и прокси, драйвер открывает тот же самый последний браузер. Я перепробовал много решений и изменил селен на старые версии, но не повезло.

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

1561625708285   mozrunner::runner  INFO Running command: "C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe" "-marionette" "-profile C:\\Users\\Usr\\Desktop\\fprofiles\\pf1" "-foreground" "-no-remote"

если я запускаю эту команду из cmd, проблема профиля остается там:

"C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe" "-marionette" "-profile C:\\Users\\Usr\\Desktop\\fprofiles\\pf1" "-foreground" "-no-remote"

Если я уберу команду "из" и сделаю ее полным текстом, она будет выглядеть так

"C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe" -marionette -profile C:\\Users\\Usr\\Desktop\\fprofiles\\pf1 -foreground -no-remote

Я клонировал селеновый проект OpenQA и пытался отлаживать там, но он также использует geckodriver.exe, и я предполагаю, что geckodriver.exe отвечает за получение аргументов и передачу в firefox. Последнее, но наименьшее значение будет заключаться в том, чтобы скомпилировать geckodriver (который был разработан в RUST ) еще раз с моего согласия, но язык программирования RUST , и это будет очень долго работа для достижения того, что мне нужно. Кто-нибудь сталкивался с такой же проблемой? Как я могу это исправить?

1 Ответ

0 голосов
/ 28 июня 2019

Попробуйте загрузить профиль браузера на основе его имени.Пример с профилем «selenium_profile»:

public static WebDriver driver;

public static String driverPath = "C:\\Users\\pburgr\\Desktop\\selenium-tests\\FF_driver_0_23\\geckodriver.exe";

public static WebDriver startFF() {
    FirefoxOptions options = new FirefoxOptions();
    ProfilesIni allProfiles = new ProfilesIni();         
    FirefoxProfile selenium_profile = allProfiles.getProfile("selenium_profile");
    options.setProfile(selenium_profile);
    options.setBinary("C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe");
    System.setProperty("webdriver.gecko.driver", driverPath);
    driver = new FirefoxDriver(options);
    driver.manage().window().maximize();
    return driver;
}

Он не должен быть статическим, поэтому вы можете проанализировать имя нужного профиля в аргументе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...