2

由于 geckodriver v0.16.0 flashplayer 默认被禁用。是否有可能在启用 flashplayer 的情况下启动 Firefox?

我正在使用 C#。我现在的代码:

var profileManager = new FirefoxProfileManager();
FirefoxProfile profile = profileManager.GetProfile("selenium"); //created firefox user named selenium
profile.SetPreference("plugin.state.flash", 1);

下面的代码对我不起作用:

profile.SetPreference("dom.ipc.plugins.enabled.libflashplayer.so", true);

当我使用这个时:

profile.SetPreference("plugin.state.flash", 1);

firefox 询问我是否要启用 flashplayer,然后刷新页面(之前填写了所有输入 - 所以我有空字段)。如果我选择“允许并记住”,下次我启动此代码时不会保存任何内容。我遇到了同样的情况。

4

2 回答 2

1

我在那里找到了解决方案: How to enable Adob​​e Flash in FireFox Selenium webdriver with FirefoxProfile

如果我替换它profile.setPreference("plugin.state.flash", 1);profile.setPreference("plugin.state.flash", 2);它会停止询问我是否要启用 Flash 播放器。

于 2017-05-18T09:24:33.197 回答
0

这是适合您的解决方案:

使用 Selenium 4.3.0、gecko 驱动程序 v0.16.0 和 Mozilla Firefox 53.0,此代码与 myfreecams.com 配合得很好。

值得一提的是,默认的 Firefox 配置文件对自动化不是很友好。当您想在 Firefox 浏览器上可靠地运行自动化时,建议创建一个单独的配置文件。自动化配置文件应该很容易加载,并且有特殊的代理和其他设置来运行良好的测试。您应该与您在所有开发和测试执行机器上使用的配置文件保持一致。如果您在各处使用不同的配置文件,那么您接受的 SSL 证书或您安装的插件会有所不同,这会使测试在机器上的行为有所不同。

因此,创建一个新的 Firefox 配置文件并在测试脚本中使用相同的配置文件涉及三个步骤。首先您需要启动配置文件管理器,其次是创建一个新配置文件,第三是在测试脚本中使用相同的配置文件。假设我们创建了一个名为“debanjan”的新 FirefoxProfile。

使用以下代码使用新的 FirefoxProfile “debanjan”打开http://www.myfreecams.com/ :

    String driverPath = "C:\\Utility\\BrowserDrivers\\";
    //Mozila Firefox
    System.setProperty("webdriver.gecko.driver", driverPath+"geckodriver.exe");
    ProfilesIni profile = new ProfilesIni();
    FirefoxProfile testprofile = profile.getProfile("debanjan");
    DesiredCapabilities dc = DesiredCapabilities.firefox();
    dc.setCapability(FirefoxDriver.PROFILE, testprofile);
    FirefoxDriver driver =  new FirefoxDriver(dc);
    driver.manage().window().maximize();
    driver.manage().timeouts().implicitlyWait(10,TimeUnit.SECONDS);
    driver.navigate().to("http://www.myfreecams.com/");

PS:此代码是 Java 代码,因此您可能需要将其转换为 C# 格式。

让我知道,如果这对你有帮助。

于 2017-04-26T15:05:54.200 回答