0

TL;DR : 在 Behat+Mink ( @javascriptw/ Sahi) 场景中,Sahi 在 an 中输入了一些文本,<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 片段无法获得6Sahi 输入的内容。这是代码([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 在 Scenario 期间输入的内容

我很坚持这个,我觉得我错过了一些东西。

链接

版本

  • 贝哈特:2.1.2
  • 貂皮:1.1.1
  • 萨希:3.5
  • PHP:5.3.6
4

1 回答 1

0

我无法重现您的错误,我的 Behat/Mink/Sahi 设置一切正常: http://screencast.com/t/2rTHo7jj

情景已通过

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

尝试在 Chrome 下运行测试:

default:
  context:
    parameters:
      base_url: YOURBASEURL
      browser: chrome
于 2011-11-09T09:44:57.017 回答