将自定义标题从水豚传递到Selenium
||
我们使用自定义标头来验证我们的Web应用程序。 http代理服务拦截请求,确认用户的真实性,然后将自定义标头注入请求中。
为了测试应用程序,我需要在请求击中ApplicationController方法之前将这些标头写入请求。现在,当前的hack适用于我所有的非javascript测试:
# in hooks.rb
Before do
require \'capybara/driver/rack_test_driver\'
module Capybara::Driver
class Authentic < RackTest
def env
super.merge(\'My-Custom-Header\' => \"foo\")
end
end
end
Capybara.register_driver(:authentic) do |app|
Capybara::Driver::Authentic.new(app)
end
Capybara.default_driver = :authentic
end
#in the controller
class ApplicationController < ActionController::Base
before_filter :authenticate
def authenticate
render :file => File.join(Rails.root, \"public\", \"403.html\") unless request.env.keys.include?(\'foo\')
end
end
任何我不想通过身份验证的请求,我都可以使用标签来使用常规的rack_test驱动程序:
Feature: Authentication
Valid users should be authenticated.
Invalid users should be redirected to the login page.
Scenario: Authorized
Given I am on the homepage
Then I should see \"Create a New Research Project\"
@rack_test
Scenario: Unauthorized
Given I go to the homepage
Then I should see \"You are not authorized to view this page.\"
当我使用硒浏览器时,在驱动程序上重新定义env的类似方法似乎无效。我认为这是因为该应用程序已在Java线程中后台处理,并且所有Rack东西都已设置。
我应该在哪里注入硒的自定义标头以将其提取?
谢谢!
没有找到相关结果
已邀请:
2 个回复
械怒等
炉挤仙挟
但是,我不确定是否可以在步骤运行时修改标头-我确定可以使用Selenium API修改标头。