web-dev-qa-db-fra.com

Passer les pilotes ChromeOptions et DesiredCapabilities?

La nouvelle mise à jour de Google Chrome provoque ce message dans le navigateur "Vous utilisez un indicateur de ligne de commande non pris en charge: --ignore-certificate-errors. La stabilité et la sécurité en pâtiront." 

D'après ce que j'ai lu sur les rapports de bogue Selenium, la solution temporaire consiste à démarrer WebDriver avec 

options.AddArgument("test-type")

Je passais déjà DesiredCapabilities lors de la création du pilote. Comment puis-je transmettre les options ChromeOptions et DesiredCapabilities au pilote?

DesiredCapabilities capabilities = DesiredCapabilities.chrome();
capabilities.setCapability("chrome.switches", Arrays.asList("--incognito"));

ChromeOptions options = new ChromeOptions();
options.addArguments("test-type");

WebDriver driver = new ChromeDriver(capabilities);
16
Arya

Je luttais contre le même problème et je l'ai finalement résolu. En gros, vous pouvez ajouter ChromeOptions à DesiredCapabilities, puis créer le pilote avec DesiredCapabilities. Une fois que j'ai essayé, il s'est débarrassé de la bannière. Quoi qu'il en soit, voici le code: 

DesiredCapabilities capabilities = DesiredCapabilities.chrome();
ChromeOptions options = new ChromeOptions();
options.addArguments("test-type");
capabilities.setCapability("chrome.binary", "<Path to binary>");
capabilities.setCapability(ChromeOptions.CAPABILITY, options);
webDriver = new ChromeDriver(capabilities);
18
JoshM

Ajout de ma réponse pour aider les utilisateurs à la recherche de ChromeOptions and Capabilities avec la dernière version de Selenium.

Le passage de capacités au constructeur ChromeDriver est obsolète à partir de v3.6.0. Référence du code source

ChromeDriver(Capabilities capabilities)
Deprecated. 
Use ChromeDriver(ChromeOptions) instead.

Au lieu de cela, vous devriez commencer à utiliser quelque chose comme ci-dessous:

ChromeOptions options = new ChromeOptions();
options.setAcceptInsecureCerts(true);
options.setUnhandledPromptBehaviour(UnexpectedAlertBehaviour.ACCEPT);
WebDriver driver = new ChromeDriver(options)

Vous pouvez toujours définir vos fonctionnalités, mais veillez à les fusionner avec ChromeOptions comme ci-dessous:

DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("something", true);

ChromeOptions options = new ChromeOptions();
options.addArguments("disable-infobars");
options.merge(capabilities);

Vous pouvez consulter l'article sur Selenium ChromeOptions pour une utilisation plus détaillée de ChromeOptions et des fonctionnalités. 

3
Dev Raj

peut être essayer ceci:

chromeOptions = webdriver.ChromeOptions()
prefs = {"profile.managed_default_content_settings.images":2}
chromeOptions.add_experimental_option("prefs",prefs)
driver = webdriver.Chrome(chrome_options=chromeOptions)

des informations connexes peuvent être trouvées ici: http://nullege.com/codes/search/Selenium.webdriver.ChromeOptions.add_experimental_option

0
rocky qi

FYI: cette technique ne semble pas fonctionner avec Chrome 41.0.2272.101m.

ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.AddExcludedArgument("ignore-certificate-errors");
capabilities = DesiredCapabilities.Chrome();
capabilities.SetCapability(ChromeOptions.Capability, chromeOptions);

new RemoteWebDriver(hubUri, capabilities, TimeSpan.FromSeconds(180))

Génère 

09:39:24.110 WARN - Exception: unknown error: cannot parse capability: chromeOptions
from unknown error: unrecognized chrome option: Arguments
(Driver info: chromedriver=2.10.267521,platform=Windows NT 6.3 x86_64) 
(WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 1.52 seconds
Build info: version: '2.43.0', revision: '597b76b', time: '2014-09-09 20:52:14'
System info: Host: 'T10-E8-GREGPE', ip: '10.123.160.70', os.name: 'Windows 8.1', os.Arch: 'x86', os.version: '6.3', Java.version: '1.8.0_40'
Driver info: org.openqa.Selenium.chrome.ChromeDriver

Cela semble fonctionner:

ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.AddArgument("test-type");
capabilities = (DesiredCapabilities)chromeOptions.ToCapabilities();

new RemoteWebDriver(hubUri, capabilities, TimeSpan.FromSeconds(180));
0
Greg Page
public void setUp() throws Exception
{
    System.out.println("Launching Google browser");
    System.setProperty("webdriver.chrome.driver", "C:\\chromedriver.exe");   

    ChromeOptions options = new ChromeOptions();
    options.addArguments("disable-infobars");
    Map<String, Object> prefs = new HashMap<String, Object>();
    prefs.put("profile.default_content_setting_values.automatic_downloads", 1);
    options.setExperimentalOption("prefs", prefs);
    prefs.put("download.default_directory", "C:\\Downloads");
    driver = new ChromeDriver(options);
    driver.manage().timeouts().implicitlyWait(100, TimeUnit.SECONDS);
    driver.manage().window().maximize(); 
}
0
Jen