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é:
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
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.
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();");
Utilisation des liaisons Selenium-Python:
#region SSL workaround for IE
if "Certificate Error" in driver.title:
driver.get("javascript:document.getElementById('overridelink').click();")
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);
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.
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
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();
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()");