Да, дело в траектории движения мыши.
moveToElement передвигает указатель от ценра элемента "Ходожественные фильмы" к центру элемента "Короткометражный ходожественный фильм". На рис. 3 видно, что прямая соединяющая центры этих элементов проходит через "Документальные фильмы".
Сложность тестирования, вероятно, связана с некорректной реализацией иерархического меню. Ваше меню не использует эффект запаздывания (setTimeout в javascript), либо запаздывание слишком мало.
Используйте в реализации меню эффект запаздывания, или более удобно организуйте работу с выбором элементов следующего уровня (как в Amazone).
Для сравнения меню с запаздыванием и меню без запаздывания (но при этом рабочего, более удобного) можете обратиться к статье Загадка выпадающего списка «Амазона»: http://habrahabr.ru/post/171905/
Или в тесте нужно передвигать указатель не по прямой соединяющей центры пунктов, а по кривой, не задевающей другие элементы (но пользователи не будут так делать, и сложный дизайн не будет пользоваться популярностью).
Кривая следующая (вправо по горизонтали и, возможно, вниз по вертикали):
moveToElement(пункт меню)
moveToElement(первый пункт подменю)
moveToElement(нужный пункт подменю)
click(нужный пункт подменю)
Извиняюсь, что так долго молчала.
Спасибо за ответ и за подсказку.
Действительно Selenium двигается по кратчайшему пути, поэтому в моем случае он захватывает не нужные пункты меню.
Если работать вот так
moveToElement(пункт меню) moveToElement(первый пункт подменю) moveToElement(нужный пункт подменю) click(нужный пункт подменю)
то все работает как надо.
И кстати такая же работа должна быть и у реального пользователя. Поэтому убедила разработчиков учесть это, и думаю будем переделывать данное меню.
Вопрос закрыт.