首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Firefox中通过URL进行HTTP基本身份验证不起作用?

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

Stack Overflow用户
提问于 2010-06-11 17:15:00
回答 4查看 44.5K关注 0票数 18

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

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

我一直在用Firefox2或3运行Selenium测试,但仍然看到"Authentication Required“对话框窗口?

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

EN

回答 4

Stack Overflow用户

发布于 2011-11-14 21:02:34

如果您使用的是FireFox驱动程序...您可以创建一个FireFox配置文件,将用户名/密码保存在密码管理器中,并使用一个附加组件自动登录。请记住,如果您在Selenium中创建FireFox或Chrome驱动程序,默认情况下,它使用匿名配置文件。所以你的常规扩展/附加组件/等都不会被使用。所以最好创建一个可以分发并保存在源代码控制中的配置文件。

1)在Windows中,从运行/开始菜单中输入"firefox.exe -p“,打开配置文件管理器,创建一个自定义的配置文件管理器,并将其与您的其余代码一起保存在某个位置。

2)选中启动时不询问

3)下载AutoAuth附加组件https://addons.mozilla.org/en-US/firefox/addon/autoauth/

4)访问需要HTTP基本身份验证的站点并保存凭证

下次您访问该站点时,AutoAuth将在不显示所需身份验证提示的情况下登录您。

如果您有NTLM,则可以修改配置设置以包括主机名:network.auto-ntlm-auth.trusted-uris

票数 5
EN

Stack Overflow用户

发布于 2010-06-11 17:23:19

您可以尝试像这样直接操作标头:

首先,当你开始的时候,你必须启用Selenium ti操作头:

selenium.start("addCustomRequestHeader=true");

然后,您必须使用一些基本的编码和头操作,如下所示:

    String authHeader = "";
    try {
    BASE64Encoder coder = new BASE64Encoder();
    authHeader = coder.encode("developers:Str492ight".getBytes());
    }
    catch (Exception e)
    {
    e.printStackTrace();
    }
    setUpSelenium();
    startSelenium();
    selenium.addCustomRequestHeader("Authorization", "Basic " + authHeader);
    selenium.open("/");
    selenium.waitForPageToLoad("10000");

Basic后的空格是必需的。这是一个基本的HTTP身份验证头的样子。

此外,您可以使用一些Http Watcher来查看请求是否包含您的身份验证请求。

要么使用Wireshark,要么使用Fiddler或Charles Proxy。

希望这能帮上忙。格格利。

票数 2
EN

Stack Overflow用户

发布于 2010-08-12 00:15:29

如前所述,addCustomRequestHeader解决方案只能使用代理注入模式。但当我尝试实现它时,我遇到了与代理注入模式相关的其他问题。

在使用Java客户端时,我不清楚代理注入是否能正常工作。每当我调用open()时,我都会收到一个奇怪的错误:"this.onXhrStateChange.bind不是一个函数“。我发现的唯一解决方案是,您需要向open()方法添加一个值为'true‘的额外参数,但Java客户端API只接受一个参数。

因此,我不得不接受上面解释的浏览器配置解决方案,我对此并不是很满意,因为它们取决于供应商是否愿意支持它们。

将您的测试移植到Selenium 2 (目前仍是alpha )可能是一个更好的前景,但在我的例子中,只有Selenium Grid支持Selenium 2,这才是可能的。

希望这能帮助任何人,塞巴斯蒂安

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3021602

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档