web-dev-qa-db-fra.com

Selenium 2 Webdriver et IE 9 Certificat de sécurité

J'ai quelques cas de test Selenium 2 Webdriver pour Firefox et Internet Explorer 9. Lorsque j'accède aux URL https sur IE9 (Windows 7 64 bits), le message d'erreur "Il existe un problème avec le certificat de sécurité de ce site Web". À ce stade, le test se bloque et échoue finalement. J'ai essayé:

  • Obtenir que Selenium clique sur le lien "Continuer sur ce site (non recommandé)". lien. Cela ne peut pas être fait car cette page d'erreur n'est pas votre page habituelle. Pareil avec JavaScript - ça ne s'exécute pas.
  • J'ai essayé d'ajouter la clé de registre
    HKEY_LOCAL_MACHINE\LOGICIEL\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_ERROR_PAGE_BYPASS_ZONE_CHECK_FOR_HTTPS_KB954312
    qui empêche l'affichage de la page d'erreur de certificat - n'a pas fonctionné. Probablement parce que je suis sur Windows 7 avec IE9.
  • Suivant ce conseil, j’ai essayé d’utiliser un proxy browsermob, mais il existe très peu de documentation et je n’ai pas trouvé de solution.
  • Enfin, je n'ai pas d'accès administrateur à mon PC - par exemple. pas d'accès aux stratégies de groupe. Selenium 2 Webdriver fonctionne bien sur Firefox. Toutes les zones de sécurité sont activées dans les options Internet IE et si j'exécute les tests sur d'autres URL (http), il n'y a pas de problème.

    Quelqu'un a-t-il une solution à ce problème? Quelqu'un souhaite-t-il maintenant utiliser un proxy browsermob (ou tout autre proxy) pour surmonter ce problème?

    Merci, Damo

    22
    damo_inc

    J'ai trouvé la réponse sur le tableau SQA: https://sqa.stackexchange.com/questions/1928/Selenium-2-webdriver-and-ie-9-security-certificate

    Nous avons créé un certificat et cela a fonctionné comme un charme.

    3
    damo_inc

    Ok je viens de le faire fonctionner sous IE9 en utilisant C # et le code suivant:

    IWebDriver driver = new InternetExplorerDriver();
    driver.Url(YOUR_URL);
    driver.Navigate().GoToUrl("javascript:document.getElementById('overridelink').click()");
    

    Et maintenant, il ira à la page prévue. Pour Java, c'est aussi simple que:

    WebDriver driver = new InternetExplorerDriver();
    driver.get(YOUR_URL);
    driver.get("javascript:document.getElementById('overridelink').click();");
    
    26
    Nyegaard

    Utilisation des liaisons Selenium-Python:

    #region SSL workaround for IE
    if "Certificate Error" in driver.title:
        driver.get("javascript:document.getElementById('overridelink').click();")
    
    4
    lacy

    Cela a fonctionné pour moi dans le passé, essayez-le,

    DesiredCapabilities capabilities = new DesiredCapabilities();
    capabilities.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);      
    Webdriver driver = new InternetExplorerDriver(capabilities);
    
    2
    nilesh

    il existe une solution beaucoup plus simple au cas où vous utiliseriez le pilote IE, documentée dans ce réponse . L'avantage supplémentaire est que vous n'êtes pas obligé d'être le propriétaire du site et que vous n'avez pas à vous embrouiller avec browsermob, le registre ou toute autre technologie de bas niveau.

    0
    Michael Bahig

    J'essaie de faire ce truc de capacités ... mais je ne sais pas comment le faire avec Ruby

    En chrome, c'est simple puisque vous pouvez utiliser des commutateurs: 

    nav=Selenium::WebDriver.for(:chrome, :switches => %w[--ignore-certificate-errors -])
    

    Peut-être est-il possible de le faire pour IE en utilisant des commutateurs

    0
    Mario

    Nous pouvons utiliser le code suivant.

    wait =new WebDriverWait(webdriver, 10);
    
    webdriver.get(url);
    WebElement ele =wait.until(ExpectedConditions.elementToBeClickable(
                   webdriver.findElement(By.linkText("Continue to this website (not  
                   recommended)."))));
     ele.click();
    
    0

    Les autres réponses ont la bonne idée, mais échouent dans la pratique car la variable WebDriver ne permet pas d'accéder immédiatement à la page d'erreur du certificat. La mise en œuvre correcte devrait attendre un peu.

    new WebDriverWait(driver, 10).until(ExpectedConditions.titleContains("Certificate"));
    
    
    driver.navigate().to("javascript:document.getElementById('overridelink').click()");
    
    0
    Cord Rehn