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在场景期间输入的内容。
我非常喜欢这个,我觉得我错过了什么。
链接:
*.features
):https://github.com/clemherreman/behatdemo 版本:
答案 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