c# - 自动选择数字证书对话框

标签 c# testing ssl automation watin

我将 WatiN (2.0.10.928) 与 C# 和 Visual Studio 2008 结合使用来测试需要证书的 SSL 安全网站。当您导航到主页时,会显示一个“选择数字证书”对话框,要求您选择一个有效的证书并单击“确定”按钮。

我正在寻找一种自动选择证书的方法,以便每次执行新测试或固定装置(以及我的浏览器重新启动)时,我都不必手动干预自动测试和选择证书。我尝试过使用各种 WatiN 对话框处理程序类,甚至研究过使用 Win32 API 来自动执行此操作,但运气不佳。

我终于找到了一个解决方案,但它为解决方案添加了另一个依赖项(称为 AutoIT 的第三方库)。由于此解决方案并不理想但确实有效并且是我能找到的最佳解决方案,我将发布该解决方案并将其标记为答案,但我仍在寻找“开箱即用”的 WatiN 解决方案 这与我的其余代码和测试装置更加一致。

感谢您的回复!

最佳答案

在我的情况下,我只附加了一个证书,所以我必须选择列表中唯一存在的证书,所以我有非常简单的 DialogHandler - 它只点击按钮如果它可以处理对话框:

public class CertificateChoosingHandler : BaseDialogHandler
{
    public override bool HandleDialog(Window window)
    {
        new WinButton(1, window.Hwnd).Click();
        return true;
    }

    public override bool CanHandleDialog(Window window)
    {
        return window.StyleInHex == "94C808CC";
    }
} 

请注意,此解决方案不适用于 Windows 7。

编辑:我忘记了一些有用的东西。当我发现此解决方案在 Windows 7 中不起作用时,我在“自定义级别”某处的 IE Internet 选项中发现了一个非常有趣的选项:当没有证书或只有一个证书存在时不提示选择客户端证书。所以我已经将我的站点添加到受信任的站点并编辑了设置,现在我不需要使用这个DialogHandler,但是即使没有出现对话框它仍然可以使用。如果不清楚,我写的,这里是如何Enable Prompt for Certificate in Internet Explorer显示证书对话框。

关于c# - 自动选择数字证书对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2588473/

相关文章:

c# - 为什么这个图像阈值在 windows 中有效,但在 mono/linux 中无效?

unit-testing - 执行 Go 测试下划线 (_) 代替正确的路径

php - HTTPS 子域不断重定向到 HTTPS 主域

java - 如何使用 Spring Boot 2.3.1 将http流量重定向到https

ssl - 服务器 SSL 不完整链(Inmotion 服务器)

c# - Monitor.Wait 和 "exitContext"参数

c# - ReadToEndAsync 是阻塞的,如何让它异步运行?

c# - C# 中的 HTTP post XML 数据

java - MockMVC如何在同一个测试用例中测试异常和响应代码

ios - is_Trial_period 在 Apple 的收据沙盒中保留为 "on"