3
respostas

Habilitar Flash Player no Chrome

Pessoal, boa tarde.

Estou tentando habilitar o Adobe Flash Player no Headless do Chrome, porém não estou conseguindo.

Segue meu código:

import java.util.Arrays;
import org.junit.Test;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;

public class testess {

    @Test
    public void inicializa() {

        ChromeOptions options = new ChromeOptions();
        options.addArguments("--start-maximized");
        options.addArguments("--ignore-certificate-errors");
        options.addArguments("--disable-popup-blocking");
        options.addArguments("--incognito");

        options.setExperimentalOption("excludeSwitches", Arrays.asList("disable-component-update"));
        options.addArguments(Arrays.asList("--always-authorize-plugins","--allow-outdated-plugins"));    
        WebDriver driver = new ChromeDriver(options);

        driver.manage().window().maximize();
        driver.get(url);
    }
}

Vi muitos sites falando para utilizar o HashMap, mas quando tento utilizá-lo, não o reconhece de forma alguma.

Podem me ajudar por gentileza?

Desde já agradeço.

3 respostas

Oi Luciana,

Qual a versão do driver você está utilizando? Pega a versão 3.141.59 e tenta usar o código:

System.setProperty("webdriver.chrome.driver", "C:\\path\\to\\chromedriver.exe");
Map<String, Object> prefs = new HashMap<String, Object>();
prefs.put("profile.default_content_settings.state.flash",1);    # 1->allow
ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("prefs", prefs);
WebDriver driver = new ChromeDriver(options);

Olá Otávio.

Funcionou com a nova versão do Driver do Selenium realmente. Contudo, não está ativando o flash.

Consegui fazer com que fique habilitado o flash no meu chrome instalado indo em chrome://flags/ na barra de link do mesmo e desabilitando a opção #enable-ephemeral-flash-permission. Depois disso coloquei nas configurações de conteúdo o link que utiliza o Flash para sempre permitir a execução automática do mesmo ao abrir o site.

O problema é que como o Selenium utiliza o ChromeDriver e não o Chrome que está instalado em minha máquina, estas configurações não são válidas ao iniciá-lo pelo JUnit.

Preciso saber como colocar isso diretamente no fonte, para adicionar essa opção de Disable e também a exceção do site. Tem alguma ideia de como fazer isso?

Já tentei até como JavascriptExecutor, mas não funciona.

Segue meu código novamente:

        ChromeOptions options = new ChromeOptions();

        WebDriver driver = new ChromeDriver(options);

        Map<String, Object> prefs = new HashMap<String, Object>();
        prefs.put("profile.default_content_settings.state.flash",1);
        prefs.put("profile.content_settings.exceptions.plugins.*,*.setting", 1);

        options.setExperimentalOption("prefs", prefs);

        driver.get(url);

        driver.findElement(By.id("elemento")).click();

Obrigada!

Segue solução que encontrei para o problema:

insira seu código aqui
@Test
public void inicializa() {

    ChromeOptions options = new ChromeOptions();
    WebDriver driver;

    // Esta linha desabilita uma função no Chrome que define se poderá habilitar automaticamente o Adobe Flash ou não.
    options.addArguments("--disable-infobars", "--disable-features=EnableEphemeralFlashPermission");
    Map<String, Object> prefs = new HashMap<>();

    // Este trecho faz com que todos os sites possuam permissão para habilitar o Adobe Flash automaticamente
    // Essa linha depende da linha acima.
    prefs.put("profile.content_settings.exceptions.plugins.*,*.setting", 1);
    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);
    prefs.put("PluginsAllowedForUrls", "Informe sua URL aqui");

    //Inicia o browser maximizado
    options.addArguments("--start-maximized");

    options.setExperimentalOption("prefs", prefs);

    driver = new ChromeDriver(options);

    driver.get(url);

    driver.findElement(By.id("elemento")).click();


}

Obrigada pela atenção.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software