Codeception: [Facebook\WebDriver\Exception\UnknownCommandException] mouseMoveTo

Created on 4 Apr 2017  路  12Comments  路  Source: Codeception/Codeception

What are you trying to achieve?

move mouse

What do you get instead?

Provide console output if related. Use -vvv mode for more details.

root@38daca98ac4d:/project/backend#  codecept run -vvv acceptance UpdateUserAccountCest 
Codeception PHP Testing Framework v2.2.10
Powered by PHPUnit 5.7.17 by Sebastian Bergmann and contributors.

Backend\tests.acceptance Tests (1) -------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Modules: WebDriver, Yii2, \bscheshirwork\Codeception\Module\DbYii2Config, \common\tests\Helper\Acceptance
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
UpdateUserAccountCest: Ensure that user update works
Signature: backend\tests\acceptance\UpdateUserAccountCest:updateUser
Test: tests/acceptance/UpdateUserAccountCest.php:updateUser
Scenario --
  [yii\db\Connection::open] 'Opening DB connection: mysql:host=db;dbname=yii2advanced'
 I have fixtures {"user":{"class":"common\\fixtures\\UserFixture","dataFile":"\/project\/backend\/tests\/_data\/user.php"}}
 I grab fixture "user","user"
 common\tests\Page\Login: login "[email protected]","qwerty"
   I am on page "/user/login"
  [GET] http://nginx:8080/user/login
   I move mouse over {"css":".breadcrumb"}
  Unable to retrieve Selenium logs : GET /session/812debec-8cf3-4733-b1d9-ebadf97bd061/log/types did not match a known command
  Build info: version: '3.3.0', revision: 'b526bd5', time: '2017-03-07 11:21:31 -0800'
  System info: host: '749356fde6fb', ip: '172.19.0.3', os.name: 'Linux', os.arch: 'amd64', os.version: '4.4.0-70-generic', java.version: '1.8.0_121'
  Driver info: org.openqa.selenium.firefox.FirefoxDriver
  Capabilities [{moz:profile=/tmp/rust_mozprofile.4j0LlPJsAN77, rotatable=false, timeouts={implicit=0, page load=300000, script=30000}, pageLoadStrategy=normal, platform=ANY, specificationLevel=0, moz:accessibilityChecks=false, acceptInsecureCerts=false, browserVersion=52.0, platformVersion=4.4.0-70-generic, moz:processID=1334, browserName=firefox, platformName=linux}]
  Session ID: 812debec-8cf3-4733-b1d9-ebadf97bd061
  Screenshot and page source were saved into '/project/backend/tests/_output/' dir
 ERROR 

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


Time: 3.38 seconds, Memory: 16.00MB

There was 1 error:

---------
1) UpdateUserAccountCest: Ensure that user update works
 Test  tests/acceptance/UpdateUserAccountCest.php:updateUser

  [Facebook\WebDriver\Exception\UnknownCommandException] mouseMoveTo
Build info: version: '3.3.0', revision: 'b526bd5', time: '2017-03-07 11:21:31 -0800'
System info: host: '749356fde6fb', ip: '172.19.0.3', os.name: 'Linux', os.arch: 'amd64', os.version: '4.4.0-70-generic', java.version: '1.8.0_121'
Driver info: driver.version: RemoteWebDriver  


Scenario Steps:

 4. $I->moveMouseOver({"css":".breadcrumb"}) at ../common/tests/_support/Page/Login.php:41
 3. $I->amOnPage("/user/login") at ../common/tests/_support/Page/Login.php:40
 2. $I->grabFixture("user","user") at tests/acceptance/UpdateUserAccountCest.php:33
 1. $I->haveFixtures({"user":{"class":"common\\fixtures\\UserFixture","dataFile":"\/project\/backend\/tests\/_data\/user.php"}}) at tests/acceptance/UpdateUserAccountCest.php:18

/repo/vendor/facebook/webdriver/lib/Remote/HttpCommandExecutor.php:320
/repo/vendor/facebook/webdriver/lib/Remote/RemoteWebDriver.php:535
/repo/vendor/facebook/webdriver/lib/Remote/RemoteExecuteMethod.php:40
/repo/vendor/facebook/webdriver/lib/Remote/RemoteMouse.php:117
/repo/src/Codeception/Module/WebDriver.php:2295
/repo/src/Codeception/Step.php:260
/repo/src/Codeception/Scenario.php:72
/project/backend/tests/_support/_generated/AcceptanceTesterActions.php:2594
/project/common/tests/_support/Page/Login.php:41
/project/backend/tests/acceptance/UpdateUserAccountCest.php:34
/repo/src/Codeception/Lib/Di.php:127
/repo/src/Codeception/Test/Cest.php:136
/repo/src/Codeception/Test/Cest.php:148
/repo/src/Codeception/Test/Cest.php:82
/repo/src/Codeception/Test/Test.php:90
/repo/vendor/phpunit/phpunit/src/Framework/TestSuite.php:718
/repo/src/Codeception/PHPUnit/Runner.php:106
/repo/src/Codeception/SuiteManager.php:157
/repo/src/Codeception/Codecept.php:184
/repo/src/Codeception/Codecept.php:153
/repo/src/Codeception/Command/Run.php:288
/repo/vendor/symfony/console/Command/Command.php:265
/repo/vendor/symfony/console/Application.php:826
/repo/vendor/symfony/console/Application.php:189
/repo/vendor/symfony/console/Application.php:120
/repo/src/Codeception/Application.php:103
/repo/codecept:36


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

Provide test source code if related

// paste test

Details

https://github.com/bscheshirwork/docker-yii2-app-advanced-rbac/tree/master/docker-codeception-run

  • Codeception version: lstest clone of 2.2
  • PHP Version:7.1.3
  • Operating System:debian
  • Installation type: Phar || Composer
  • List of installed packages (composer show)
root@38daca98ac4d:/repo# composer show     
behat/gherkin                            v4.4.5 Gherkin DSL parser for PHP 5.3
bscheshirwork/codeception-db-yii2-config v1.0   Connection 'Db' codeception module to 'Yii2' module database settings
codeception/specify                      0.4.6  BDD code blocks for PHPUnit and Codeception
codeception/verify                       0.3.3  BDD assertion library for PHPUnit
doctrine/instantiator                    1.0.5  A small, lightweight utility to instantiate objects in PHP without invoking their constructors
facebook/graph-sdk                       5.4.4  Facebook SDK for PHP
facebook/webdriver                       1.4.0  A PHP client for Selenium WebDriver
flow/jsonpath                            0.3.4  JSONPath implementation for parsing, searching and flattening arrays
fzaninotto/faker                         v1.5.0 Faker is a PHP library that generates fake data for you.
guzzlehttp/guzzle                        6.2.3  Guzzle is a PHP HTTP client library
guzzlehttp/promises                      v1.3.1 Guzzle promises library
guzzlehttp/psr7                          1.4.2  PSR-7 message implementation that also provides common utility methods
league/factory-muffin                    v3.0.1 The goal of this package is to enable the rapid creation of objects for the purpose of testing.
league/factory-muffin-faker              v1.0.0 The goal of this package is to wrap faker to make it super easy to use with factory muffin.
monolog/monolog                          1.22.1 Sends your logs to files, sockets, inboxes, databases and various web services
myclabs/deep-copy                        1.6.0  Create deep copies (clones) of your objects
pda/pheanstalk                           v3.1.0 PHP client for beanstalkd queue
php-amqplib/php-amqplib                  v2.6.3 Formerly videlalvaro/php-amqplib.  This library is a pure PHP implementation of the AMQP protocol. It's been tested against RabbitMQ.
phpdocumentor/reflection-common          1.0    Common reflection classes used by phpdocumentor to reflect the code structure
phpdocumentor/reflection-docblock        3.1.1  With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.
phpdocumentor/type-resolver              0.2.1 
phpspec/prophecy                         v1.7.0 Highly opinionated mocking framework for PHP 5.3+
phpunit/php-code-coverage                4.0.7  Library that provides collection, processing, and rendering functionality for PHP code coverage information.
phpunit/php-file-iterator                1.4.2  FilterIterator implementation that filters files based on a list of suffixes.
phpunit/php-text-template                1.2.1  Simple template engine.
phpunit/php-timer                        1.0.9  Utility class for timing
phpunit/php-token-stream                 1.4.11 Wrapper around PHP's tokenizer extension.
phpunit/phpunit                          5.7.17 The PHP Unit Testing framework.
phpunit/phpunit-mock-objects             3.4.3  Mock Object library for PHPUnit
predis/predis                            v1.1.1 Flexible and feature-complete Redis client for PHP and HHVM
psr/http-message                         1.0.1  Common interface for HTTP messages
psr/log                                  1.0.2  Common interface for logging libraries
sebastian/code-unit-reverse-lookup       1.0.1  Looks up which function or method a line of code belongs to
sebastian/comparator                     1.2.4  Provides the functionality to compare PHP values for equality
sebastian/diff                           1.4.1  Diff implementation
sebastian/environment                    2.0.0  Provides functionality to handle HHVM/PHP environments
sebastian/exporter                       2.0.0  Provides the functionality to export PHP variables for visualization
sebastian/global-state                   1.1.1  Snapshotting of global state
sebastian/object-enumerator              2.0.1  Traverses array structures and object graphs to enumerate all referenced objects
sebastian/recursion-context              2.0.0  Provides functionality to recursively process PHP variables
sebastian/resource-operations            1.0.0  Provides a list of PHP built-in functions that operate on resources
sebastian/version                        2.0.1  Library that helps with managing the version number of Git-hosted PHP projects
squizlabs/php_codesniffer                2.8.1  PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.
stecman/symfony-console-completion       0.7.0  Automatic BASH completion for Symfony Console Component based applications.
symfony/browser-kit                      v3.2.6 Symfony BrowserKit Component
symfony/console                          v3.2.6 Symfony Console Component
symfony/css-selector                     v3.2.6 Symfony CssSelector Component
symfony/debug                            v3.2.6 Symfony Debug Component
symfony/dom-crawler                      v3.2.6 Symfony DomCrawler Component
symfony/event-dispatcher                 v3.2.6 Symfony EventDispatcher Component
symfony/finder                           v3.2.6 Symfony Finder Component
symfony/polyfill-mbstring                v1.3.0 Symfony polyfill for the Mbstring extension
symfony/process                          v3.2.6 Symfony Process Component
symfony/yaml                             v3.2.6 Symfony Yaml Component
vlucas/phpdotenv                         v2.4.0 Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.
webmozart/assert                         1.2.0  Assertions to validate method input/output with nice error messages.

  • Suite configuration:
# paste suite config here
class_name: AcceptanceTester
modules:
    enabled:
# See docker-codeception-run/docker-compose.yml: "ports" of service "nginx" is null; the selenium service named "firefox"
# See nginx-conf/nginx.conf: listen 80 for frontend; listen 8080 for backend
        - WebDriver:
            url: http://nginx:8080/
            host: firefox
            port: 4444
            browser: firefox
        - Yii2:
            part:
              - email
              - ORM
              - Fixtures
        - \bscheshirwork\Codeception\Module\DbYii2Config:
            dump: ../common/tests/_data/dump.sql #relative path from "codeception.yml"
        - common\tests\Helper\Acceptance

Any idea?

upt:
only for selenium/standalone-firefox[-debug]:3.[2|3].0
web driver chrome and Docker image
selenium/standalone-chrome-debug:3.3.0
avoid this problem

Most helpful comment

I'm also getting this error using

  • Firefox 54.0
  • geckodriver 0.17.0
  • Codeception 2.3.3

All 12 comments

It is a problem of Firefox driver (Marionette), because it was very late to implement Actions API.

I've seen that it has been implemented recently: https://github.com/SeleniumHQ/selenium/issues/2285#issuecomment-287584656 but I haven't checked if it is truth.

Make sure that you are using the latest versions of Firefox, geckodriver and Selenium.

How i can check geckodriver?
The selenium is fresh (5h), the firefox (selenium/standalone-firefox) is latest tag 3.3.0

The problem is actually with Facebook webdriver, it does not support w3c actions which geckodriver implements

I hoped that Selenium will manage to abstract differences between APIs - it is really odd that they exposed different methods for a new API.
If APIs are so incompatible, probably we will endup adding new methods to Codeception specifically for Firefox.

Facebook Webdriver is not using Selenium. W3C is making the spec, Selenium is updating to be compatible with the spec. I'm not sure what you're looking for, if you use selenium the actions are backward compatible

It is like @Naktibalda wrote - for Selenium 3.x, it is the Selenium server which works as an adapter for the client and translates legacy JsonWire actions to W3C equivalents (and vice-versa) depending on which one the executor (browser) understands.

The php-webdriver implements the JsonWireProtocol (and so far only small fractions of W3C spec - because the spec itself is not yet finished), to this means you cannot communicate directly with geckodriver (because it only understands W3C spec), you need to use Selenium server to translate the communication.

There is surely plan in php-webdriver to update to use the W3C protocol, however, the spec is still not finished (it is "Candidate Recommendation" state as of now), so we will implement it once the standard is released as stable (so that we won't need to rewrite the protocol multiple times as the spec develops :) ).

Also one more thing - the geckodriver requires Selenium 3.3.1, it won't work with 3.3.0 https://github.com/mozilla/geckodriver/pull/593 .

Does it problem been solved? I use tha lattest version of selenium-server-3.4.0, gecko-0.16.1, firefox-53.0, and still meet that exception.

I can confirm that I still get the same error
and the tracking bug for Actions API is still open https://bugzilla.mozilla.org/show_bug.cgi?id=1292178

I'm also getting this error using

  • Firefox 54.0
  • geckodriver 0.17.0
  • Codeception 2.3.3

I am still facing the same problem.

[Facebook\WebDriver\Exception\UnknownCommandException] mouseMoveTo

  • os.name:'Mac OS X'
  • os.arch: 'x86_64'
  • os.version: '10.13.6'
  • java.version: '1.8.0_111'
  • Driver info: driver.version: RemoteWebDriver
  • Codeception 2.4.5
  • geckodriver 0.23.0
  • Firefox 63.0

Originally I hit this issue too (on Firefox only), but now it's working for me.

Just tested with:

  • Windows 10
  • Codeception 2.4.1
  • Firefox 68.0.1
  • geckodriver 0.24.0
  • Selenium Standalone 3.8.1 started with the option -enablePassThrough false
  • Java 11.0.1
Was this page helpful?
0 / 5 - 0 ratings