java - 使用自签名 SSL 证书时,无法使用远程 Selenium WebDriver + Jenkins + FireFox 在 Java 上运行自动测试

标签 java selenium firefox ssl jenkins

在花了 DAYS 研究文档和论坛后,我发现我的问题没有解决,或者我没有足够的资格来理解解决方案,所以.. 请帮忙。 首先,我是自动测试的新手(但是我有很好的手动测试背景),所以可能是我在现有解决方案上出错了,或者错过了一些必需的知识,所以请理解我的问题: -)

我已经安装了带有 Jenkins 的 Debian 8(带有 GUI)的远程电脑。此外,对于我的工作来说,在那里使用 FireFox 浏览器 (50.0.2) 至关重要,因此它也存在。同样由于不同的原因,我为此使用了 Geckodriver。

我有一些自动测试,可以使用自签名 SSL 证书在站点上测试一些 Web 应用程序。主要问题 - 在尝试从该站点打开任何 URL 时,我遇到了不同的错误,并且我的测试无效。

我在 FireFox 上创建了自定义配置文件,然后向其添加了证书,然后将我的自定义配置文件添加到测试本身:

@Before
public void loadPage() throws InterruptedException, IOException {
System.setProperty("webdriver.gecko.driver", "/home/roa/Documents/geckodriver");
FirefoxProfile profile = new FirefoxProfile(new File("/home/rwgndg97.default/")); // path to dir with custom profile with cert installed
this.driver = new FirefoxDriver(profile);
driver.manage().window().maximize();
}

@Test
public void auth_test() throws Exception {
driver.get("url which require certificate");
}

@After
public void closeDriver() {
driver.quit();
}

当我尝试运行此代码时,我得到以下日志:

Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 30.694 sec <<< FAILURE! - in TestSuite auth_test on auth_test(Test.New)(Test.New) Time elapsed: 29.822 sec <<< FAILURE! org.openqa.selenium.WebDriverException: Reached error page: about:certerror?e=nssBadCert&u=https%3A//url_that_requires_cerificate/&c=UTF-8&f=regular&d=url_that_requires_cerificate%20uses%20an%20invalid%20security%20certificate.%0A%0AThe%20certificate%20is%20only%20valid%20for%20the%20following%20names%3A%0A%20%20*.a.championat.com%2C%20a.championat.com%20%20%0A%0AError%20code%3A%20%3Ca%20id%3D%22errorCode%22%20title%3D%22SSL_ERROR_BAD_CERT_DOMAIN%22%3ESSL_ERROR_BAD_CERT_DOMAIN%3C/a%3E%0A Build info: version: '3.0.1', revision: '1969d75', time: '2016-10-18 09:49:13 -0700' System info: host: 'debian', ip: '127.0.1.1', os.name: 'Linux', os.arch: 'amd64', os.version: '3.16.0-4-amd64', java.version: '1.8.0_111' Driver info: org.openqa.selenium.firefox.FirefoxDriver

日志显示我正在尝试使用无效的 SSL 证书通过 https 访问服务器,除了 FireFox 手动使用的相同证书让我在没有任何警告或通知的情况下成功打开网站之外,一切都很清楚。

将以下代码添加到自动测试中不会给出任何结果: profile.setAcceptUntrustedCertificates(true); profile.setAssumeUntrustedCertificateIssuer(false);

请告知如何让测试在我的条件下运行。我很高兴收到有关如何解决此问题的任何有用信息。 提前致谢。

最佳答案

尝试添加接受 SSL 证书的选项,

                profile.setAcceptUntrustedCertificates(true);
                profile.setAssumeUntrustedCertificateIssuer(false);
                driver = new FirefoxDriver(profile);

关于java - 使用自签名 SSL 证书时,无法使用远程 Selenium WebDriver + Jenkins + FireFox 在 Java 上运行自动测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41144242/

相关文章:

java - 如何正确处理人类可读的结果?

java - 为什么我的客户端不能在非默认端口(在 mac 上运行)上调用 selenium 服务器?

javascript - Firefox 扩展叠加层会注入(inject) JavaScript 文件?

java - APACHE POI - 无法为单元格提供背景颜色

selenium - 如何使用xpath获取n个元素?

java - 为 geckodriver 设置自定义 FireFox 位置

linux - Firefox 在 Kali Linux 中非常慢/不工作

java - JVM 基准测试应用程序

Java 6 注释带或不带参数重复

java: Blowfish 加密解密 Bad padding 异常