Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用无头铬在Selenium中启用flash_Java_Flash_Selenium Chromedriver_Google Chrome Headless - Fatal编程技术网

Java 如何使用无头铬在Selenium中启用flash

Java 如何使用无头铬在Selenium中启用flash,java,flash,selenium-chromedriver,google-chrome-headless,Java,Flash,Selenium Chromedriver,Google Chrome Headless,作为CI流程的一部分,我正在尝试自动化与flash应用程序的一些交互。在使用Selenium独立服务器无头运行chrome(通过xvfb运行)时,我在启用flash方面遇到了麻烦。我做了很多搜索,但到目前为止还没有找到任何有效的方法 我目前正在使用这个,但我愿意切换到不同的版本,如果有一个已知的工作配置某处 Selenium独立服务器3.11 铬驱动2.33 铬65.0.3325.181 爪哇8 当我第一次启动时,我会在页面上看到一条警告,说我需要启用Adobe Flash Player。我

作为CI流程的一部分,我正在尝试自动化与flash应用程序的一些交互。在使用Selenium独立服务器无头运行chrome(通过xvfb运行)时,我在启用flash方面遇到了麻烦。我做了很多搜索,但到目前为止还没有找到任何有效的方法

我目前正在使用这个,但我愿意切换到不同的版本,如果有一个已知的工作配置某处

  • Selenium独立服务器3.11
  • 铬驱动2.33
  • 铬65.0.3325.181
  • 爪哇8
当我第一次启动时,我会在页面上看到一条警告,说我需要启用Adobe Flash Player。我通过使用以下信息获得“过去”该消息:

ChromeOptions选项=新的ChromeOptions();
选项。添加参数(“无头”);
Map prefs=新的HashMap();
prefs.put(“profile.default\u content\u setting\u values.plugins”,1);
prefs.put(“profile.content\u settings.plugin\u whitelist.adobeflashplayer”,1);
prefs.put(“profile.content\u settings.exceptions.plugins.*,per\u resource.adobeflashplayer”,1);
//为此站点启用闪存
prefs.put(“pluginAllowedforURL”、“ourapp.com”);
选项。设置实验选项(“prefs”,prefs);
WebDriver=新的ChromeDriver(选项);
driver.get(“ourapp.com”);
当加载我们的应用程序时,页面现在给出了一条稍微不同的消息,我一直无法通过。有没有办法解决这个问题,或者有没有其他方法在默认情况下启用Flash


提前感谢您的帮助

感谢一位同事指出这篇文章,指出插件在无头chrome中不起作用

幸运的是,在我的例子中,我已经使用了xvfb作为虚拟显示器,所以从我的ChromeOptions中删除“headless”参数就是让一切运行所需要的

编辑*

虽然我确实不需要在使用xvfb时以无头模式运行,但我最终发现,解决我的问题的真正“解决方案”(更多的是一种解决方法)是将定制的chrome配置文件上传到我的docker图像中。这样做可以让我设置所有需要的首选项,而原始帖子中发布的任何代码都不是必需的。我更愿意通过编程实现这一点,但这至少让我得到了我现在需要的东西。我想我会发帖的,以防将来有人碰到这件事

    ChromeOptions options = new ChromeOptions();
    options.addArguments("headless");

    Map<String, Object> prefs = new HashMap<String, Object>();
    prefs.put("profile.default_content_setting_values.plugins", 1);
    prefs.put("profile.content_settings.plugin_whitelist.adobe-flash-player", 1);
    prefs.put("profile.content_settings.exceptions.plugins.*,*.per_resource.adobe-flash-player", 1);
    // Enable Flash for this site
    prefs.put("PluginsAllowedForUrls", "ourapp.com");
    options.setExperimentalOption("prefs", prefs);

    WebDriver driver = new ChromeDriver(options);
    driver.get("ourapp.com");