PhantomJS 没有 运行 JavaScript 代码
PhantomJS does not run JavaScript code
我正在使用 Laravel 和 Vagrant。我需要 运行 使用 Codeception 和 PhantomJS 进行验收测试。除了 运行ning JS 代码外,一切似乎都很好。
我有一个注册表单,使用了一点 JS 代码来防止机器人注册:
<script type="text/javascript">
$(function() {
$('.form-horizontal').append('<input type="checkbox" name="human" value="1" checked="checked">');
});
</script>
这就是我所做的。
1) 我运行 phantomjs:
B# phantomjs --webdriver=5555
2)开始验收测试:
vendor/bin/codecept run acceptance RegisterCept
当然测试失败了,因为PhantomJS不执行JS代码,没有它就无法完成注册。我究竟做错了什么?配置文件:
class_name: AcceptanceTester
modules:
enabled:
- WebDriver:
url: http://localhost
browser: phantomjs
port: 4444
capabilities:
javascriptEnabled: true
webStorageEnabled: true
unexpectedAlertBehaviour: 'accept'
- Laravel5:
environment_file: .env.testing
- \Helper\Acceptance
我正在使用特拉维斯。测试也失败了。我的.travis.yml:
language: php
php:
- 5.5
- 5.6
services: postgresql
addons:
postgresql: "9.3"
install:
- composer install
before_script:
- cp .env.testing .env
- php artisan migrate --seed --env="testing"
- php vendor/bin/codecept build
- phantomjs --webdriver=4444 2>&1 >/dev/null &
- sleep 5
script: php vendor/bin/codecept run
我的测试:
<?php
$I = new AcceptanceTester($scenario);
$I->wantTo('register a user');
$I->amOnPage('/Register');
$I->wait(1);
$I->fillField('name', 'Joe Doe');
$I->fillField('email', 'example@example.com');
$I->fillField('password', 'password');
$I->fillField('password_confirmation', 'password');
$I->click('button[type=submit]');
$I->amOnPage('/');
$I->see('Joe Doe');
您的问题是您在同一套件中同时启用了 Laravel5 和 WebDriver 模块。
这是最近的一个常见问题 - https://github.com/Codeception/Codeception/issues/2435
您套件中的功能操作由不支持 javascript 的 Laravel5 模块执行。解决方案是禁用 Laravel5 模块。
我正在使用 Laravel 和 Vagrant。我需要 运行 使用 Codeception 和 PhantomJS 进行验收测试。除了 运行ning JS 代码外,一切似乎都很好。
我有一个注册表单,使用了一点 JS 代码来防止机器人注册:
<script type="text/javascript">
$(function() {
$('.form-horizontal').append('<input type="checkbox" name="human" value="1" checked="checked">');
});
</script>
这就是我所做的。
1) 我运行 phantomjs:
B# phantomjs --webdriver=5555
2)开始验收测试:
vendor/bin/codecept run acceptance RegisterCept
当然测试失败了,因为PhantomJS不执行JS代码,没有它就无法完成注册。我究竟做错了什么?配置文件:
class_name: AcceptanceTester
modules:
enabled:
- WebDriver:
url: http://localhost
browser: phantomjs
port: 4444
capabilities:
javascriptEnabled: true
webStorageEnabled: true
unexpectedAlertBehaviour: 'accept'
- Laravel5:
environment_file: .env.testing
- \Helper\Acceptance
我正在使用特拉维斯。测试也失败了。我的.travis.yml:
language: php
php:
- 5.5
- 5.6
services: postgresql
addons:
postgresql: "9.3"
install:
- composer install
before_script:
- cp .env.testing .env
- php artisan migrate --seed --env="testing"
- php vendor/bin/codecept build
- phantomjs --webdriver=4444 2>&1 >/dev/null &
- sleep 5
script: php vendor/bin/codecept run
我的测试:
<?php
$I = new AcceptanceTester($scenario);
$I->wantTo('register a user');
$I->amOnPage('/Register');
$I->wait(1);
$I->fillField('name', 'Joe Doe');
$I->fillField('email', 'example@example.com');
$I->fillField('password', 'password');
$I->fillField('password_confirmation', 'password');
$I->click('button[type=submit]');
$I->amOnPage('/');
$I->see('Joe Doe');
您的问题是您在同一套件中同时启用了 Laravel5 和 WebDriver 模块。
这是最近的一个常见问题 - https://github.com/Codeception/Codeception/issues/2435
您套件中的功能操作由不支持 javascript 的 Laravel5 模块执行。解决方案是禁用 Laravel5 模块。