如何在 Selenium
⚡ 智能摘要
SSL证书错误导致程序停止运行 Selenium 测试浏览器拒绝不受信任或已过期证书的时机,因此每个 WebDriver 脚本都需要一个特定于浏览器的功能来接受证书并允许自动化继续进行。
SSL 证书 Selenium
SSL(安全套接字层)是一种标准安全协议,用于在服务器和客户端(即浏览器)之间建立安全连接。
SSL证书通过强大的加密和数字签名来保护服务器和客户端应用程序之间传输的数据。网站所有者可以安装SSL证书或代码签名证书。
SSL 证书的好处
使用 SSL 证书有很多好处,例如:
- 可以提高用户和客户的信任,从而快速促进业务增长
- 这些证书有助于保护在线交易和客户敏感信息(如信用卡/借记卡数据等)的安全。
- 签名证书往往会获得最大的下载量和用户的好评。
SSL 保护的网站以 https:// 如果连接安全建立,您将看到锁定图标或绿色地址栏。
例如,如果你想通过网上银行进行一些交易,或者想购买 电话 通过 Flipkart 等电子商务网站打电话或 Amazon.
Web 浏览器和服务器之间发生了什么
- 浏览器尝试连接使用 SSL 保护的网站。浏览器请求网络服务器确认自己的身份
- 服务器向浏览器发送其 SSL 证书的副本
- 浏览器验证 SSL 证书是否真实。如果是,它会向服务器发送一条消息
- 服务器发回数字签名的确认信息以启动 SSL 加密会话
- 加密数据在服务器和浏览器之间共享
卡号和登录凭证会在该会话中传输,因此交易必须保持端到端加密,不能被拦截。
例如,下面的挂锁和地址栏确认证书已被接受。
- 类型 https://netbanking.hdfcbank.com/netbanking/ .
- 按Enter键。
- 您将在浏览器中看到一个绿色的地址栏,如下所示:-
SSL 证书如何创建安全连接
下图 trac握手即是正式的握手,接下来的步骤将逐一解释每一次交流。
- 浏览器 向服务器发送 HTTPS 请求。
- 现在服务器必须向浏览器提供一些标识来证明它是可信的。这可以通过将其 SSL 证书的副本发送到浏览器来完成。
- 每个浏览器都有自己的受信任 CA 列表。 浏览器根据其受信任的 CA 列表检查证书根,确保证书未过期、未被撤销,并且通用名称对于其所连接的网站有效。
- 如果浏览器信任该证书,则会在服务器和浏览器之间创建加密会话。
- 服务器和浏览器可以发送加密消息
SSL证书的类型
浏览器和服务器使用SSL证书机制才能建立安全的连接。这个连接涉及三种类型的证书的验证。
- 根源
- 中级
- 服务器证书
获取 SSL 证书的流程
获取 SSL 证书的过程包括以下步骤:-
- 首先,您必须创建 CSR(创建证书签名请求)请求。
- CSR 请求创建 CSR 数据文件,该文件被发送给称为 CA(证书颁发机构)的 SSL 证书颁发机构。
- CA 使用 CSR 数据文件为您的服务器创建 SSL 证书。
- 收到 SSL 证书后,您必须将其安装在您的服务器上。
- 还需要安装一个中间证书,将您的 SSL 证书与 CA 的根证书绑定在一起。
下图代表所有三个证书- 根证书、中间证书和服务器证书。
如何验证 SSL 证书
SSL 通过 Web 服务器计算机和 Web 服务器浏览器上存在的程序和加密/解密例程组合来工作。
SSL 证书主要包含以下信息。
- 主题是网站所有者的身份。
- 有效性信息——一个公钥和一个私钥。
私钥和公钥是两个唯一关联的加密密钥(数字)。任何由公钥加密的内容只能由私钥解密。浏览器在检查证书时会显示这些字段,如下所示。
当服务器和客户端之间因证书而无法建立安全连接时,将出现以下SSL证书错误。
SSL 证书错误的类型
假设您输入一个 https 请求,浏览器返回“此连接不受信任”或“该网站的安全证书不受信任”。浏览器无法使用提供的证书建立安全连接,因此会停止请求并提示用户采取相应措施。
你可能在不同浏览器中看到的证书错误类型可能类似于以下内容
- 大火Fox - 当前连接不可信任
- Google Chrome 此网站的安全性不可信。
- 互联网浏览器 (IE) – 该网站提供的安全证书未受到受信任的证书颁发机构 (CA) 的信任
下面的屏幕截图显示了不受信任的证书产生的插页广告。
如何使用处理 SSL 证书错误 Selenium 网络驱动程序
假设 测试脚本 会跳转到上面的“不受信任的连接”页面。需要调整脚本,使其能够完全通过自身处理 SSL 例外。 自动化.
此更改取决于所使用的浏览器实例,而这正是所需功能发挥作用的地方。所需功能配置驱动程序实例。 Selenium Webdriver,包括 ChromeDriver Firefox驱动程序和 Internet Explorer。
以下步骤可以添加到 Selenium 编写脚本以清除每个浏览器的“不受信任的连接”状态。
⚠️ Selenium 4 年备注: DesiredCapabilities 类在 Selenium 4. 浏览器选项类现在通过单一的 W3C 功能承载相同的设置, 接受不安全证书.
| 浏览器 | Selenium 4班 | 电话联系 |
|---|---|---|
| 铬系列 | ChromeOptions | setAcceptInsecureCerts(true) |
| Firefox | Firefox可选项 | setAcceptInsecureCerts(true) |
| 沟通特长 | EdgeOptions | setAcceptInsecureCerts(true) |
| Safari | Javascript执行者 | 临时绕过脚本 |
ChromeOptions options = new ChromeOptions(); options.setAcceptInsecureCerts(true); WebDriver driver = new ChromeDriver(options);
SSL 证书错误处理 Firefox
处理 SSL 证书错误 Firefox,我们需要使用所需的能力 Selenium Webdriver 并按照以下步骤操作。
步骤1) 首先我们需要创建一个新的 Firefox 轮廓 说 ”我的简历“。
步骤2) 现在按如下方式访问脚本中的 myProfile 并创建 Firefox配置文件对象。
ProfilesIni prof = new ProfilesIni() FirefoxProfile ffProfile= prof.getProfile ("myProfile")
步骤3) 现在我们需要在 Fire 中设置“setAcceptUntrustedCertificates”和“setAssumeUntrustedCertificateIssuer”属性。 Fox 个人资料。
ffProfile.setAcceptUntrustedCertificates(true) ffProfile.setAssumeUntrustedCertificateIssuer(false)
步骤4) 现在使用火Fox 火中的轮廓Fox 驱动程序对象。
WebDriver driver = new FirefoxDriver (ffProfile)
注意: “设置接受不受信任的证书“ 和 ”设置假设不受信任的证书颁发者“是处理网络浏览器中证书错误的功能。
⚠️ 版本说明: 上述基于配置文件的代码目标 Selenium 2和 Selenium 3。 上 Selenium 4. 通过以下方式附加配置文件 Firefox选项和 Firefox 默认接受不安全的证书。
Chrome 中的 SSL 证书错误处理
为了处理 Chrome 中的 SSL 错误,下面的 DesiredCapabilities 对象接受每个 SSL 证书,因此用户在运行期间不会看到任何证书警告。
我们需要创建 DesiredCapabilities 类的实例,如下所示:-
DesiredCapabilities handlSSLErr = DesiredCapabilities.chrome () handlSSLErr.setCapability (CapabilityType.ACCEPT_SSL_CERTS, true) WebDriver driver = new ChromeDriver (handlSSLErr);
⚠️ 版本说明: CapabilityType.ACCEPT_SSL_CERTS 属于旧的 JSON Wire 协议。运行后,请将其替换为前面显示的 ChromeOptions 代码片段。 Selenium 4.
IE 中的 SSL 证书错误处理
与在 Chrome 浏览器中处理 SSL 证书不同, Firefox在IE浏览器中,您可能需要使用以下方式处理它: JavaScript的.
在 IE 中处理 SSL 证书,您可以通过两种方式处理这种情况。
方法1) 点击插页式广告上的“继续访问此网站(不推荐)”链接。该链接的 ID 为“overridelink”,您可以在按 F12 打开的 HTML 窗格中确认,如下图所示。
使用 driver.navigate() 方法单击链接 Java脚本如下:
driver.navigate ().to ("javascript:document.getElementById('overridelink').click()");
方法2) 第二种方法与 Chrome 的 SSL 处理代码非常相似。
DesiredCapabilities capabilities = new DesiredCapabilities(); capabilities.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true); System.setProperty("webdriver.ie.driver","IEDriverServer.exe"); WebDriver driver = new InternetExplorerDriver(capabilities);
上述代码将有助于处理 IE 中的 SSL 证书错误。
⚠️ 版本说明: Internet Explorer 11 已于 2022 年 6 月停止支持。针对以下情况运行相同的场景: Microsoft Edge 使用 EdgeOptions,或者在旧版应用程序仍然需要的情况下,以 IE 模式驱动 Edge。





