【问题标题】:Selenium 2.20: how to handle User Identification Request dialogSelenium 2.20:如何处理用户识别请求对话框
【发布时间】:2012-04-05 12:15:40
【问题描述】:

我是 Selenium 的新手,但有一些简单的网站自动化工作。 这是我无法弄清楚的:我有一个使用用户的网站 用于验证用户的证书。我发出以下...

    WebDriver driver = new FirefoxDriver();
    driver.get("https://xt01:9100/owf/");

当网站出现时,用户识别请求也会出现 对话框询问我想“登录”使用哪个证书。我无法得到 按住该对话框以指定证书并点击按钮, 因此出现的第一个屏幕是“未授权”屏幕 (因为我没有指定 1)任何证书或 2)正确的证书)

Q) 我应该如何“抓住”这个对话框? Selenium IDE 不注册对话框(似乎没有“看到”它,因此不包含任何点击)

有一个选项(工具-选项-高级-加密)sez:“当 服务器请求我的个人证书”,选项为 “自动选择一个”或“每次都问我”。在火狐上 启动的实例,我将其设置为“自动选择一个”并且 单击 ,但是在下次启动时不会“记住”(它 被重置为“每次都问我”),因此我需要能够 捕获用户识别请求对话框并在之前处理它 开始我的测试......怎么样?

提前谢谢...

【问题讨论】:

    标签: java firefox selenium


    【解决方案1】:

    到目前为止,我还没有时间尝试,但我认为它应该会有所帮助:

    • 创建新的 Firefox 配置文件并将其命名为熟悉的名称 - 例如selenium
    • 在此配置文件中,安装给定的证书并让 FF 记住您的决定
    • 创建新的 FireFoxDriver 实例时,试试这个:

      ProfilesIni profile = new ProfilesIni();
      FirefoxProfile ffprofile = profile.getProfile("selenium");
      WebDriver driver = new FirefoxDriver(ffprofile);
      driver.get("https://xt01:9100/owf/");
      

    【讨论】:

    • 这成功了!我花了一段时间来创建个人资料(因为我以前从未这样做过)。谢谢!!
    • Firefox 23.0.1 会要求您选择证书,即使您选择记住决定(并且列表中只有 1 个选项)。 :(
    • (我的意思是在你重启浏览器之后)有什么解决方法吗?
    • 如前所述 - 我自己还没有尝试过。这种方法有点奏效,但它不再奏效了。我的解决方案是 - 我向管理层明确表示,如果他们想要测试自动化,他们必须为我提供没有证书的环境......他们做到了;)
    • 要在 Firefox 中创建配置文件,在 url 栏中输入 about:profiles,Firefox 将显示“关于配置文件”页面。从那里您可以创建新的配置文件。
    【解决方案2】:

    可以通过user_pref("security.default_personal_cert", "Select Automatically"); 在您的个人资料的prefs.js 中指定证书提示 使用 Firefox 33.0 和 selenium-webdriver-2.47.1 对我有用。

    【讨论】:

    • 谢谢!!使用 Mozilla Firefox 52.0.2 和 geckodriver 0.16.1 为我工作
    【解决方案3】:

    证书由操作系统而非浏览器管理。从浏览器的证书存储中删除除必要证书之外的所有证书,然后将浏览器配置为在仅存在一个证书时自动选择证书。您还可以创建浏览器配置文件并让您的程序启动此配置文件或避免通过 HTTPS 进行测试。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-17
      • 2021-08-30
      • 1970-01-01
      • 1970-01-01
      • 2011-09-04
      相关资源
      最近更新 更多