TL;DR : 在 Behat+Mink ( @javascript
w/ 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 片段无法获得6
Sahi 输入的内容。这是代码([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 期间输入的内容。
我很坚持这个,我觉得我错过了一些东西。
链接:
- Github 项目(带
*.features
):https ://github.com/clemherreman/behatdemo - 直播网站:http ://behatdemo.widop.com/js-square
版本:
- 贝哈特:2.1.2
- 貂皮:1.1.1
- 萨希:3.5
- PHP:5.3.6