2014-05-23 10 views
10

Nowa aktualizacja Google Chrome powoduje pojawienie się tego komunikatu w przeglądarce "Używasz nieobsługiwanej flagi wiersza polecenia: --ignore-certificate-errors." Trwałość i bezpieczeństwo ucierpią. "Przekaż sterowniki ChromeOptions i DesiredCapabilities?

Z tego co czytałem na raportach selen błędów, tymczasowa rozwiązaniem jest rozpoczęcie webdriver z

options.AddArgument("test-type") 

byłem już przechodząc DesiredCapabilities podczas tworzenia sterownika. Jak przekazać sterownik ChromeOptions i DesiredCapabilities?

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

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

WebDriver driver = new ChromeDriver(capabilities); 

Odpowiedz

15

Walczyłem z tym samym problemem, w końcu go złamałem. Zasadniczo można dodać ChromeOptions do DesiredCapabilities, a następnie utworzyć sterownik za pomocą DesiredCapabilities. Raz spróbowałem, pozbyłem się banera. W każdym razie, oto kod:

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); 
+0

To jest przestarzałe w WebDriver 3.6.0. – plaidshirt

+0

Tak. Przenoszenie możliwości do konstruktora ChromeDriver jest przestarzałe. –

2
  System.setProperty("webdriver.chrome.driver","<<your chrome path>>"); 
     // To remove message "You are using an unsupported command-line flag: --ignore-certificate-errors. 
     // Stability and security will suffer." 
     // Add an argument 'test-type' 
     DesiredCapabilities capabilities = DesiredCapabilities.chrome(); 
     ChromeOptions options = new ChromeOptions(); 
     options.addArguments("test-type"); 
     capabilities.setCapability("chrome.binary", the_entered_chrome_path); 
     capabilities.setCapability(ChromeOptions.CAPABILITY, options); 

     driver = new ChromeDriver(capabilities); 

pracował dla mnie też! Dzięki chłopaki!

0

FYI: Ta technika nie działa z 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)) 

Generuje

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 

To wydaje się działać:

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

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

Dodałem moją odpowiedź, aby pomóc użytkownikom, którzy wciąż szukają ChromeOptions i możliwości z najnowszą wersją Selenium.

Funkcje przekazywania do konstruktora ChromeDriver są nieaktualne z wersji 3.6.0. Source code Reference

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

Zamiast tego należy zacząć używać coś jak poniżej:

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

Można nadal mieć swoje funkcje zdefiniowane, ale upewnij się połączyć te zdolności z ChromeOptions jak poniżej:

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

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

Możesz sprawdzić artykuł na temat Selenium ChromeOptions, aby uzyskać bardziej szczegółowe informacje na temat ChromeOptions i możliwości: