Firefox使用Selenium C#打开错误的配置文件

时间:2019-06-27 09:31:14

标签: c# selenium selenium-webdriver geckodriver selenium-firefoxdriver

我将硒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的Selenium项目,并尝试在那里进行调试,但是它也使用geckodriver.exe,我猜geckodriver.exe负责获取参数并将其传递给firefox。 最后但最不可行的选择是,根据我的同意,再次编译geckodriver(已developed in RUST),但是编程语言是 RUST ,要实现这一目标将是一项漫长的工作我需要的。 有没有人遇到过同样的问题?我该如何解决?

1 个答案:

答案 0 :(得分:0)

尝试根据其名称加载浏览器配置文件。名为“ 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;
}

它不能为静态,以便您可以在参数中解析所需配置文件的名称。