当前位置: 首页 > 面试题库 >

在Firefox中通过URL进行HTTP基本身份验证不起作用?

微生令雪
2023-03-14
问题内容

我知道通常您可以通过在URL中传递用户名和密码来登录需要Selenium进行HTTP基本身份验证的网站,例如:

selenium.open("http://myusername:myuserpassword@mydomain.com/mypath");

我已经在Firefox 2或3上运行了Selenium测试,仍然可以看到“需要身份验证”对话框窗口?

更新:这似乎不是Selenium问题,而是Firefox问题。如果我在FF中手动输入URL,则会看到验证对话框,但是如果我在Opera中输入URL,则显示的页面将不显示验证对话框。


问题答案:

有助于Druska的答案,您可以使用Selenium 2 API进行相同的配置:

FirefoxProfile profile = new FirefoxProfile();
profile.setPreference("network.http.phishy-userpass-length", 255);
profile.setPreference("network.automatic-ntlm-auth.trusted-uris","yourDomain");
new FirefoxDriver(profile);

这种方法比较简单,您不必要求每个开发人员都更改其Firefox配置。我仅使用Firefox驱动程序进行了测试。

更新:

由于某种原因,以上解决方案不适用于较新版本的Firefox。这是现在对我有效的(已在Firefox 19.0.2上测试):

安装AutoAuth Firefox插件;
访问需要身份验证的站点。输入您的用户名和密码,并确保选择保存凭据;
将AutoAuth安装文件保存在硬盘上:在插件页面上,右键单击“添加到Firefox”和“将链接另存为”;
实例化Firefox webdriver,如下所示:


FirefoxProfile firefoxProfile = new ProfilesIni().getProfile("default");
File pluginAutoAuth = new File("src/test/resources/autoauth-2.1-fx+fn.xpi");
firefoxProfile.addExtension(pluginAutoAuth);
return new FirefoxDriver(firefoxProfile);

确保使用保存插件安装的正确路径实例化pluginAutoAuth文件。如果您不喜欢使用默认配置文件,则可以使用Firefox Profile Manager并创建一个特定于您的测试的文件。



 类似资料:
  • 问题内容: 在(带有)中,我尝试使用以下语句通过基本身份验证访问我的网页: 但是Google Chrome浏览器在控制台中向我发出以下警告: [弃用]其URL包含嵌入式凭据(例如https://user:pass@host/)的子资源请求被阻止。有关更多详细信息,请参见https://www.chromestatus.com/feature/5669008342777856。 在标记的链接中提到该

  • 在浏览器中直接键入下面的url,它可以工作, 但是,当我使用相同的url,用于selenium网络驱动程序测试时,它连接到 以及请求HTTP身份验证。我是否需要更改chrome浏览器中的任何设置,或调整默认配置文件?

  • 问题内容: 在(带有)中,我尝试使用以下语句通过基本身份验证访问我的网页: 但是Google Chrome浏览器在控制台中向我发出以下警告: [弃用]其URL包含嵌入式凭据(例如)的子资源请求被阻止。 在标记的链接中提到该支持已被删除: 在子资源请求中放弃对嵌入式凭据的支持。(已删除) 我现在的问题是,是否有另一种方法可以从Selenium进行基本身份验证? 问题答案: 对此进行了一些更新 : 在

  • 问题内容: 我试图模仿Java中此curl命令的功能: 我使用Commons HttpClient 3.0编写了以下内容,但最终还是从服务器上获取了一个。有人可以告诉我我做错了什么吗? 我后来尝试了Commons HttpClient 4.0.1,但仍然遇到相同的错误: 问题答案: 好的,这样可以工作。万一有人想要它,这是对我有用的版本:)

  • 问题内容: 注销HTTP身份验证受保护的文件夹的 正确 方法是什么? 有一些解决方法可以实现这一目标,但是它们可能会带来危险,因为它们可能有故障或在某些情况下/浏览器中无法使用。这就是为什么我要寻找正确和清洁的解决方案。 问题答案: 亩。 没有正确的方法 ,甚至没有跨浏览器一致的方法。 这是来自HTTP规范(第15.6节)的问题: 现有的HTTP客户端和用户代理通常会无限期地保留身份验证信息。HT

  • 问题内容: 我正在尝试使用Jersey 1.X版本连接到安全的外部休息服务。 我用下面的代码 但是我一直在碰这个例外。 我检查了此外部Rest服务的API,它说它支持基本HTTP身份验证,但我不知道为什么我一直遇到此错误。 有什么想法吗? 问题答案: 由于基本身份验证本身缺乏安全性,因此通常通过SSL来完成,如您在URL 的架构中所见。使用SSL时,会使用证书。SSL握手由服务器发送其证书和客户端