Capybara/Poltergeist HTTP 身份验证
Capybara/Poltergeist HTTP Authentication
所以我正在尝试 运行 在 Rails 站点上进行一些自动化测试,这似乎需要基本的 HTTP 身份验证:
我使用 localhost:3000 作为我的主机。
Capybara.app_host = "http://localhost:3000"
Capybara.server_host = "localhost"
Capybara.server_port = "3000"
我现在 运行 在 firefox 上运行它,我尝试做 http://username:password@localhost:3000 但它通常会警告 "phishing sites" 但我仍然继续,但它不起作用并且http 弹出窗口仍然出现。 (我听说很多浏览器禁用了这个功能)。
我知道 Selenium 有办法绕过它,但是 Poltergeist 呢?或 Capybara 内置的任何东西。
我看到这里提到了一个以前的问题:
但是上面的 url 不起作用,这似乎也不起作用。
编辑:当前的 Poltergeist 驱动程序设置:
options = {
:timeout => 45,
:phantomjs_options => ["--proxy-auth="]
}
Capybara.register_driver :poltergeist do |app|
Capybara::Poltergeist::Driver.new(app, options)
end
Capybara.default_driver = :selenium
Capybara.javascript_driver = :poltergeist
你可以试试
page.driver.basic_authorize(username, password)
在访问 Poltergeist 中的页面之前。这将在 phantomjs 中设置用户名和密码以及 'Authorization' header
为那些使用 Selenium + Firefox 的人提供另一个解决方案:
当您访问需要 HTTP 基本身份验证的页面时,Firefox 会显示一个对话框,要求您输入用户名和密码。
Selenium 没有为您提供很多与对话框交互的选项,但它有一个 accept_alert
方法可以接受可选的击键。
要同时在两个字段中输入文本,您可以使用 Selenium 的 tab
键码:
tab = Selenium::WebDriver::Keys::KEYS[:tab]
SESSION.accept_alert(with: username + tab + password)
这是我唯一可以使用的解决方案 - 我使用的是 Selenium 的 remote
驱动程序,它不支持内置的 HTTP 基本身份验证。
如果一切都失败了,试试这个。
所以我正在尝试 运行 在 Rails 站点上进行一些自动化测试,这似乎需要基本的 HTTP 身份验证:
我使用 localhost:3000 作为我的主机。
Capybara.app_host = "http://localhost:3000"
Capybara.server_host = "localhost"
Capybara.server_port = "3000"
我现在 运行 在 firefox 上运行它,我尝试做 http://username:password@localhost:3000 但它通常会警告 "phishing sites" 但我仍然继续,但它不起作用并且http 弹出窗口仍然出现。 (我听说很多浏览器禁用了这个功能)。
我知道 Selenium 有办法绕过它,但是 Poltergeist 呢?或 Capybara 内置的任何东西。
我看到这里提到了一个以前的问题:
但是上面的 url 不起作用,这似乎也不起作用。
编辑:当前的 Poltergeist 驱动程序设置:
options = {
:timeout => 45,
:phantomjs_options => ["--proxy-auth="]
}
Capybara.register_driver :poltergeist do |app|
Capybara::Poltergeist::Driver.new(app, options)
end
Capybara.default_driver = :selenium
Capybara.javascript_driver = :poltergeist
你可以试试
page.driver.basic_authorize(username, password)
在访问 Poltergeist 中的页面之前。这将在 phantomjs 中设置用户名和密码以及 'Authorization' header
为那些使用 Selenium + Firefox 的人提供另一个解决方案:
当您访问需要 HTTP 基本身份验证的页面时,Firefox 会显示一个对话框,要求您输入用户名和密码。
Selenium 没有为您提供很多与对话框交互的选项,但它有一个 accept_alert
方法可以接受可选的击键。
要同时在两个字段中输入文本,您可以使用 Selenium 的 tab
键码:
tab = Selenium::WebDriver::Keys::KEYS[:tab]
SESSION.accept_alert(with: username + tab + password)
这是我唯一可以使用的解决方案 - 我使用的是 Selenium 的 remote
驱动程序,它不支持内置的 HTTP 基本身份验证。
如果一切都失败了,试试这个。