【问题标题】:Behat / Mink - session being lost part way through scenarioBehat / Mink - 会话在场景的中途丢失
【发布时间】:2016-03-12 17:48:28
【问题描述】:

我有一个如下所示的 Behat 场景:

Scenario: Creating and booking an event
    Given I go to "http://domain.com/"
    And I am logged in with the username "user" and password "pass"
    And I follow "link"
    When I press "Book Now"
    Then I should see "Booking Confirm"

这很好用,但我希望能够在登录后指定一个特定的 URL,而不是仅仅跟随一个链接。像这样:

Scenario: Creating and booking an event
    Given I go to "http://domain.com/"
    And I am logged in with the username "user" and password "pass"
    And I go to "http://domain.com/single-event/?event_id=14&start_time=1457481600&finish_time=1457481600"
    When I press "Book Now"
    Then I should see "Booking Confirm"

当我这样编写测试时它不起作用 - 我得到:

Button with id|name|title|alt|value "Book Now" not found.

我已经转储了此时正在解析的 HTML,很明显用户已注销(如果用户已注销,则“立即预订”按钮不会出现)。似乎在“我要去”声明之后开始了一个新会话 - 是可以避免的,还有其他方法可以实现我正在寻找的东西吗?

【问题讨论】:

  • 您如何处理您的 I 新闻。你是怎么定义的?像@AkaAlso 提到你必须指定你现在的书是什么,以帮助搜索。这就是问题
  • @eskoba 安装 mink 时,默认定义按下 - 它会查找具有该文本、名称或 ID 的按钮。就像我说的第一个场景工作正常,所以这条线不是问题
  • 你解决过这个问题吗?我有一个非常相似的问题,我无法弄清楚。

标签: php phantomjs behat mink


【解决方案1】:

您必须指定“立即预订”是什么。正如错误消息所说。例如,如果是id,则必须添加#标签。

When I press "#Book Now"

【讨论】:

  • 这不是问题 - 它知道 Book Now 是按钮文本,因为第一个场景可以正常工作。问题在于,在第二种情况下,页面被视为未登录用户
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多