Selenium Java popup authentication" http:// user:pass@xyz.com"不起作用

时间:2016-05-01 00:18:27

标签: java http selenium authentication popup

它没有显示填写的任何字段,也没有尝试填写它们。你知道我可以使用哪些其他解决方案吗?现在我正在做

public static void main(String[] args){

    WebDriver driver = new FirefoxDriver();
    String user = "kek";
    String pass = "trekek";
    String url = "http://www."+ user + ":" + pass + "@xyz.org/auth.html";
    System.out.println(url);
    driver.get(url);
}

2 个答案:

答案 0 :(得分:0)

带有用户名和密码的网址格式似乎有误。您在凭据前面有一个www,尝试将其更改为:

String url = "http://"+ user + ":" + pass + "@www.xyz.org/auth.html";

答案 1 :(得分:0)

  

它没有显示填写的任何字段,也没有尝试填写它们。

也不应该!当您使用这样的URL时,HTTP规范说客户端向服务器发送GET请求,其中包含URL中嵌入的一些凭据。服务器对此做了什么取决于您如何实现服务器。

现在你可以理论上实现你的服务器发回一个预先填充详细信息的登录页面,但我不会。

  • 将用户详细信息放在URL中是不安全的。它们将显示在服务器端日志中。

  • 如果您使用HTTP网址,则非常不安全,这意味着该网址将通过网络以明文形式传输。黑客很容易窥探未加密的连接。

  • 这不是大多数用户通常会使用的功能。 (我们也不希望他们;见上文!)

  • 这不是一个理智的人想要实现(或使用)RESTful API的方式。

解决方案?

  • 如果您正在为现有服务器实施Selenium测试,那么您需要按照其设计工作方式来驱动服务器的登录顺序。发送触发服务器的请求,为您提供登录页面。模拟填写字段并单击"登录"。从响应中提取会话cookie。

  • 如果您控制服务器(即您可以更改它),您可以为程序化身份验证设计另一种Web API;即,您的Selenium测试不需要模拟填写和提交登录表单。但请安全地做到。用户名和密码只能通过HTTPS传输。