Lors de l'exécution de mon script python Selenium dans Chrome, j'obtiens environ trois des messages d'erreur ci-dessous chaque fois qu'une page se charge, même si tout fonctionne bien. façon de supprimer ces messages?
[24412: 18772: 0617/090708: ERREUR: la prise de contact ssl_client_socket_openssl.cc (1158)] a échoué; renvoyé -1, code d'erreur SSL 1, net_error -100
Vous obtenez cette erreur lorsque le navigateur vous demande d'accepter le certificat du site Web. Vous pouvez définir d'ignorer ces erreurs par défaut afin d'éviter ces erreurs.
Pour Chrome, vous devez ajouter - ignorer les erreurs de certificat et - ignore-ssl-errors Argument ChromeOptions ():
options = webdriver.ChromeOptions()
options.add_argument('--ignore-certificate-errors')
options.add_argument('--ignore-ssl-errors')
driver = webdriver.Chrome(chrome_options=options)
Pour Firefox, vous devez définir accept_untrusted_certs FirefoxProfile () option sur True:
profile = webdriver.FirefoxProfile()
profile.accept_untrusted_certs = True
driver = webdriver.Firefox(firefox_profile=profile)
Pour Internet Explorer, vous devez définir acceptSslCerts la capacité souhaitée:
capabilities = webdriver.DesiredCapabilities().INTERNETEXPLORER
capabilities['acceptSslCerts'] = True
driver = webdriver.Ie(capabilities=capabilities)
Pour moi, cela a été résolu après avoir écrit le code ci-dessous dans les options chrome, le changement par rapport à la réponse ci-dessus consistait à inclure spki-list.
options = webdriver.ChromeOptions()
options.add_argument('--ignore-certificate-errors-spki-list')
options.add_argument('--ignore-ssl-errors')
driver = webdriver.Chrome(chrome_options=options)
Ce message d'erreur ...
[ERROR:ssl_client_socket_openssl.cc(855)] handshake failed; returned -1, SSL error code 1, net_error -100
... implique que la prise de contact a échoué entre ChromeDriver et Navigateur Chrome a échoué à un moment donné.
Cette erreur est générée en raison de net :: SSLClientSocketImpl :: DoHandshake et net :: SSLClientSocketImpl implémenté dans ssl_client_socket_impl.cc net :: SSLClientSocketImpl :: DoHandshake = comme suit:
int SSLClientSocketImpl::DoHandshake() {
crypto::OpenSSLErrStackTracer err_tracer(FROM_HERE);
int rv = SSL_do_handshake(ssl_.get());
int net_error = OK;
if (rv <= 0) {
int ssl_error = SSL_get_error(ssl_.get(), rv);
if (ssl_error == SSL_ERROR_WANT_CHANNEL_ID_LOOKUP) {
// The server supports channel ID. Stop to look one up before returning to
// the handshake.
next_handshake_state_ = STATE_CHANNEL_ID_LOOKUP;
return OK;
}
if (ssl_error == SSL_ERROR_WANT_X509_LOOKUP &&
!ssl_config_.send_client_cert) {
return ERR_SSL_CLIENT_AUTH_CERT_NEEDED;
}
if (ssl_error == SSL_ERROR_WANT_PRIVATE_KEY_OPERATION) {
DCHECK(ssl_config_.client_private_key);
DCHECK_NE(kSSLClientSocketNoPendingResult, signature_result_);
next_handshake_state_ = STATE_HANDSHAKE;
return ERR_IO_PENDING;
}
OpenSSLErrorInfo error_info;
net_error = MapLastOpenSSLError(ssl_error, err_tracer, &error_info);
if (net_error == ERR_IO_PENDING) {
// If not done, stay in this state
next_handshake_state_ = STATE_HANDSHAKE;
return ERR_IO_PENDING;
}
LOG(ERROR) << "handshake failed; returned " << rv << ", SSL error code "
<< ssl_error << ", net_error " << net_error;
net_log_.AddEvent(
NetLogEventType::SSL_HANDSHAKE_ERROR,
CreateNetLogOpenSSLErrorCallback(net_error, ssl_error, error_info));
}
next_handshake_state_ = STATE_HANDSHAKE_COMPLETE;
return net_error;
}
Selon ERREUR: la poignée de main ssl_client_socket_openssl.cc a échoué le problème principal est le échec de poignée de main quand ChromeDriver poignées de main avec pages SSL dans Chrome. Bien que Chromium l'équipe effectue un test pour Prise de contact SSL à net_unittests
, content_tests
, et browser_tests
mais n'étaient pas exhaustif. Certains cas d'utilisation sont laissés de côté en s'appuyant sur les tests en amont.
Cette erreur ne sera pas interrompre la exécution de votre Suite de test et vous pouvez ignorer ce problème pour le moment jusqu'à ce qu'il soit résolu par l'équipe Chromium.
J'étais confronté au même problème. Le problème est que j'ai défini webdriver.chrome.driver
propriété système à chrome.exe. Mais il faut télécharger chromedriver.exe
et définissez le chemin du fichier en tant que valeur sur webdriver.chrome.driver
propriété système.
Une fois cela réglé, tout a bien fonctionné.