Javascript无法通过<input type =“text”/>获取Sahi输入的文本

时间:2011-11-08 14:40:08

标签: php bdd behat sahi mink

TL; DR:在Behat + Mink(@javascript w / Sahi)场景中,Sahi在<input>中输入一些文本,并且页面中的Javascript无法获取由Sahi进入

更新:

解决方案:下载最后一个版本的Sahi解决了这个问题。无论错误是什么,都已得到纠正。

上下文

我正在建立一个小型演示网站,向我的团队展示Behat + Mink可以做些什么。有几页,可以输入正方形的大小并获得该正方形的周长。 一个页面使用普通的旧POST方法,另一个页面使用Javascript计算周长

“JS页面”的网址:http://behatdemo.widop.com/js-square

为了向我的团队展示测试javascript是可能的,我使用Sahi作为Mink驱动程序,但它似乎不起作用。我写了一个场景,用户输入6作为方边长度,并获得24作为周边([链接到github上的文件](https://github.com/clemherreman/behatdemo/blob /master/features/js_square.feature#L7))

@javascript
Scenario: Inputting a valid side size
Given I am on "/js-square"
When I fill in "side" with "6"
And I press "Calculate"
And I wait for the result to appear
And I wait a little
Then I should see "Perimeter (using js): 24 cm"

注意:And I wait a little是一个等待10秒的调试步骤,以便能够查看Sahi firefox窗口上显示的内容

问题

似乎计算周长的javascript片段无法获得Sahi输入的6。这是代码([链接到github上的文件](https://github.com/clemherreman/behatdemo/blob/master/website/views/js-square.twig#L27))

我没有"Perimeter (using js): 24 cm",而是"Perimeter (using js): Error cm"

(function($) {
  $('form').submit(function(e) {
    e.preventDefault();
    // #side is a <input type="text"> tag, where user input a square side length
    var side = parseFloat(jQuery('#side').val()) || NaN;
    var perimeter = side*4.0 || 'Error';
    $('#sidebar').text('Perimeter (using js): '+perimeter+ ' cm');
  });
})(jQuery);

调试/思想

经过一番调查后发现,jQuery('#side').val()返回一个空字符串,这就是我显示“错误”的原因,而不是周边。 似乎Javascript无法获得Sahi在场景期间输入的内容

我非常喜欢这个,我觉得我错过了什么。

链接

版本

  • Behat:2.1.2
  • Mink:1.1.1
  • Sahi:3.5
  • PHP:5.3.6

1 个答案:

答案 0 :(得分:0)

我无法重现您的错误,我的Behat / Mink / Sahi设置上的每一个都很好: http://screencast.com/t/2rTHo7jj

场景传递

我在OSX上使用 Sahi 3.5 Behat 2.1.2 Mink 1.1.1 使用 Chrome的最新版本&amp; PHP 5.3.8-ZS5.5.0

尝试在Chrome下运行测试:

default:
  context:
    parameters:
      base_url: YOURBASEURL
      browser: chrome