Laravel Dusk:未知错误:调用函数结果缺少“值”

时间:2018-08-06 14:39:26

标签: php laravel laravel-dusk

我在Laravel Dusk的type()和value()方法上遇到问题。我收到以下错误。

$ php artisan dusk --group=activation
Warning: TTY mode is not supported on Windows platform.
PHPUnit 5.7.27 by Sebastian Bergmann and contributors.


DevTools listening on ws://127.0.0.1:12599/devtools/browser/84028821-2ca1-4d26-b66c-4697d2302117
E                                                                   1 / 1 (100%)

Time: 13,35 seconds, Memory: 18,00MB

There was 1 error:

1) Tests\Browser\CounselorActivationTest::testActivationWithSubscriptionWithPasswordLogin
Facebook\WebDriver\Exception\UnknownServerException: unknown error: call function result missing 'value'
  (Session info: chrome=68.0.3440.84)
  (Driver info: chromedriver=2.33.506120 (e3e53437346286c0bc2d2dc9aa4915ba81d9023f),platform=Windows NT 10.0.17134 x86_64)

D:\devYubu\yubu\vendor\facebook\webdriver\lib\Exception\WebDriverException.php:114
D:\devYubu\yubu\vendor\facebook\webdriver\lib\Remote\HttpCommandExecutor.php:326
D:\devYubu\yubu\vendor\facebook\webdriver\lib\Remote\RemoteWebDriver.php:547
D:\devYubu\yubu\vendor\facebook\webdriver\lib\Remote\RemoteWebDriver.php:308
D:\devYubu\yubu\vendor\laravel\dusk\src\Concerns\InteractsWithElements.php:97
D:\devYubu\yubu\tests\Browser\tests\userActivation\CounselorActivationTest.php:58
D:\devYubu\yubu\vendor\laravel\dusk\src\TestCase.php:91
D:\devYubu\yubu\tests\Browser\tests\userActivation\CounselorActivationTest.php:95

ERRORS!
Tests: 1, Assertions: 0, Errors: 1.

我使用值方法2次,可以看到第一个实际上填写了表格,但是第二个却失败了。

->value('input[name=external_id]', $counselor->getAttribute(User::COLUMN_EXTERNAL_ID))
->value('input[name=name_full]', $counselor->getAttribute(User::COLUMN_NAME_FULL))

当我使用type()时,第一个也会失败:

->type('external_id', $counselor->getAttribute(User::COLUMN_EXTERNAL_ID))
->type('name_full', $counselor->getAttribute(User::COLUMN_NAME_FULL))

在使用Windows 10时,我在Windows上运行Dusk(已安装PHP 7.2)。我的应用程序在带有PHP 7.0的Homestead上运行。我正在使用Laravel 5.4

2 个答案:

答案 0 :(得分:1)

这是过时的ChromeDriver的问题。

非常感谢Jonas Staudenmeir,他创建了一个用于更新Chromedriver的软件包:

https://github.com/staudenmeir/dusk-updater

答案 1 :(得分:0)

我回声@Martijn Ihhoff。获取staudenmeir更新器- https://github.com/staudenmeir/dusk-updater

下载并运行它后(请按照上面链接页上的说明进行操作),请务必杀死旧版ChromeDriver。这是我的操作方式:

运行ps -aux,然后找到以/vendor/laravel/dusk/bin/chromedriver-linux结尾的进程,该行左侧的第二个参数将是PID(进程ID),将其复制(以及任何其他正在运行的PID chromeDrivers),然后通过运行kill #####(其中#####是复制的PID)杀死它们。一旦所有进程都被杀死,请重新运行黄昏。