黄瓜测试 - 浏览器检测僵尸用户代理

时间:2017-03-29 10:19:03

标签: ruby-on-rails cucumber capybara

我需要用'#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

的机器人

1 个答案:

答案 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。宝石暂时没有更新,所以我不知道它是否仍然有效。