使用Safari Capybara Selenium的基本浏览器身份验证

时间:2019-02-01 14:23:28

标签: ruby selenium rspec capybara safaridriver

我在使用Capybara / Selenium的Safari上进行浏览器身份验证时遇到问题。

我正在使用此代码进行身份验证:

visit "https://#{ENV['AUTH_USERNAME']}:#{ENV['AUTH_PASSWORD']}@my-staging-app.heroku.com"

这在Chrome和FF上很好用,但在Safari上不行。

有什么想法可以绕过这个吗?

1 个答案:

答案 0 :(得分:0)

Okey,我已经找到解决方案。我不得不使用例如反向代理Nginx并发送适当的标头:)

这是我的操作方式:

在此示例中,我将使用凭据login: adminpassword: secret123

转到https://www.base64encode.org并对您的凭据admin:secret123进行编码。

在此示例中为YWRtaW46c2VjcmV0MTIz

brew install nginx

sudo vim /usr/local/etc/nginx/nginx.conf

粘贴此代码:

worker_processes  1;  

events {
    worker_connections 1024;
}

http {
    server {
        listen 8080;
        server_name localhost;

        location / { 
            proxy_pass https://your_app.herokuapp.com;
            proxy_set_header Authorization "Basic YWRtaW46c2VjcmV0MTIz";
        }   
    }   
}

更改proxy_pass以匹配您的应用程序网址。

然后从proxy_set_headerAuthorization "Basic <your_encoded_creds>"

然后:brew services start nginx

从现在开始,当您点击http://localhost:8080时,您将被重定向到页面并登录。