Selenium 2 Webdriver e IE 9 Security Certificate

Ho alcuni casi di test di Selenium 2 Webdriver per Firefox e Internet Explorer 9. Quando accedo a https URL su IE9 (Windows 7 a 64 bit) ottengo “C’è un problema con il certificato di sicurezza di questo sito Web”. A questo punto il test si blocca e alla fine fallisce. Provai:

  • Ottenere Selenium per fare clic su “Continua su questo sito Web (non consigliato)”. collegamento. Questo non può essere fatto in quanto questa pagina di errore non è la tua solita pagina. Lo stesso con JavaScript: non viene eseguito.
  • Ho provato ad aggiungere la chiave di registro
    HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Internet Explorer \ MAIN \ FeatureControl \ FEATURE_ERROR_PAGE_BYPASS_ZONE_CHECK_FOR_HTTPS_KB954312
    che impedisce la visualizzazione della pagina di errore del certificato – non ha funzionato. Probabilmente perché sono su Windows 7 con IE9.
  • Seguendo questo consiglio ho provato ad usare il proxy browsermob, ma c’è poca documentazione là fuori e non ho potuto risolverlo.
  • Infine, non ho accesso amministratore al mio PC, ad es. Nessun accesso ai criteri di gruppo. Selenium 2 Webdriver funziona perfettamente su Firefox. Ho tutte le zone di sicurezza abilitate in IE Internet Options e se eseguo i test su altri URL (http) non ci sono problemi.

    Qualcuno ha una soluzione a questo problema? Qualcuno ora ha voglia di usare il proxy browsermob (o qualsiasi altro proxy) per superare efficacemente questo problema?

    Grazie, Damo

    Va bene ho appena lavorato sotto IE9 usando C # e il seguente codice:

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

    E ora andrà alla pagina desiderata. Per Java è semplice come:

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

    Usando i collegamenti Selenium-Python:

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

    Ho trovato la risposta sulla scheda SQA: https://sqa.stackexchange.com/questions/1928/selenium-2-webdriver-and-ie-9-security-certificate

    Abbiamo creato un certificato e ha funzionato come un fascino.

    Questo ha funzionato per me in passato, provalo,

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

    Qualche progresso in questo? Sto provando a fare questa cosa delle capacità … ma non so come farlo usando Ruby 🙁

    In chrome è semplice dato che puoi usare gli switch:

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

    Forse è ansible farlo per IE usando gli interruttori

    esiste una soluzione molto più semplice nel caso in cui si utilizzi un driver IE, documentato in questa risposta . Il vantaggio aggiunto è che non è necessario essere il proprietario del sito e non è necessario aggrapparsi a browsermob o al registro o ad altre tecnologie di basso livello

    Possiamo usare il seguente codice.

     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(); 

    Le altre risposte hanno l’idea corretta, ma falliscono nella pratica perché il WebDriver non naviga immediatamente alla pagina degli errori del certificato. L’implementazione corretta dovrebbe attendere un po ‘.

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