我需要用'#34; bot"和"用户"用户代理。
在某些控制器中,我有一个机器人保护条款
if browser.bot?
redirect_to(canonical_path, status: :moved_permanently)
else
do_some_tracking
redirect_somewhere
end
我进行了黄瓜测试,其功能可能会因机器人或用户访问该页面而有所不同
Feature: Visit the special page
Scenario: A bot visits the special page
When I visit the special page
I should see the home page
Scenario: A user visits the special page not signed in
Given I am not logged-in
When I visit the special page
I should see "Who are you ?"
Scenario: A user visits the special page signed in
Given I am logged-in as "michael"
When I visit the special page
I should see "Achievement earned : explorer"
有没有办法按场景修改用户代理?
我虽然在Before
中使用了代码和After
/ env.rb
块,但我不确定如何实际更改当前驱动程序的用户代理字符串(以及之后将其恢复正常)
否则默认的Poltergeist驱动程序的用户代理是" PhantomJS"它始终被识别为browser
gem
答案 0 :(得分:1)
假设您正在使用Poltergeist(因为您在问题中提到过),您可以通过设置' User-Agent'来覆盖当前测试的用户代理。基于标记的标题在块之前(它将在下一次测试时自动重置)。
page.driver.add_header("User-Agent", "whatever you want")
这在Poltergeist自述文件中有记录 - https://github.com/teampoltergeist/poltergeist#manipulating-request-headers
如果你不使用Poltergeist,其他驱动程序也有设置标题的方法,并且有一个capybara-user_agent
gem,它提供了用于设置用户代理的统一API。宝石暂时没有更新,所以我不知道它是否仍然有效。