2013-07-15 2 views
2

Я использую Intel html5 app development framework. В частности, я использую their carousel plugin. Но я подозреваю, что знание webdriver более полезно здесь.Selenium ElementNotVisibleException при приложении div применяется преобразование

Способ, которым их карусель работает, заключается в том, что страницы плавают рядом друг с другом внутри div, который имеет ограниченную ширину и перекрытие. Вы можете видеть только одну из страниц за раз в окне просмотра div.

Когда вы касаетесь, чтобы перейти к следующему div, он применяет преобразование css для анимации, сдвигая пролив страницы. Это прекрасно работает. Однако у webdriver возникают проблемы с элементами внутри анимационного div.

Когда вы находитесь на первой странице, селен сообщает все элементы (на обеих страницах), как показано, хотя половина из них скрыта. Когда вы перешли на вторую страницу, селен сообщает все элементы (на обеих страницах), которые не отображаются.

Я отслеживал его вниз к этому CSS собственности, которая будет применяться к анимации DIV:

-webkit-transform: translate3d(-1024px, 0px, 0); 

Когда это применяется, селен считает этот элемент является невидимым. Когда я удаляю его с помощью инструментов разработчика Chrome, он считает, что все они видны.

Два способа вы могли бы быть в состоянии помочь мне:

  • Могу ли я получить селен, чтобы сообщить правильно видимость этих элементов? Возможно, путем настройки того, как работает карусель? (Это с открытым исходным кодом).
  • Могу ли я сказать селену просто щелкнуть элемент в любом случае, даже если он «невидим»?
+0

Я также спросил Intel об этом на своих форумах (https://forums.html5dev-software.intel.com/viewtopic.php?f=28&t=4111), но похоже, что это больше проблема webdriver , видя, как элемент на самом деле виден! –

+1

Это, похоже, повторяющаяся проблема, с которой команда Селен долгое время занималась. См. https://github.com/lightbody/browsermob-proxy#using-with-selenium. Какую версию селена вы используете? Попробуйте обновить его до текущего 2.33.0, со временем все время улучшаются. Работает ли он в любом браузере или вообще не работает (FF и Chrome - это главное, что должно работать). –

+0

Я пробовал последнюю версию селена. Я использую Chrome в Windows 8.Я могу протестировать в другом браузере, но на самом деле я разрабатываю гибридное приложение для таргетинга на веб-кит, поэтому его нелегко запускать в других браузерах. –

ответ

1

Это решает проблему, обойдя ошибку в селене.

new Actions(driver).MoveToElement(element).Click().Perform(); 

Selenium может щелкнуть по ссылке, используя этот код. Теперь мне просто нужно попробовать и получить минимальный пример для использования в качестве отчета об ошибках для сопровождающих селена ... сложно.

+0

Кто-то отредактировал мой ответ, чтобы использовать camelCase для имен методов. Я вернул его обратно, поскольку этот пример находится на C#, а не на Java. –

0

Я нашел настройку для карусели, которая, похоже, работает, но это может испортить поведение каким-то образом, которого я не ожидал. Я заменил эту линию, в moveCSS3

el.style[$.feat.cssPrefix+"Transform"] = "translate" + translateOpen + distanceToMove.x + "px," + distanceToMove.y + "px" + translateClose; 

с

el.style["margin-left"] = distanceToMove.x + "px"; 
el.style["margin-top"] = distanceToMove.y + "px"; 

, который, кажется, работает.

Другие ответы приветствуются. Это ошибка, о которой я должен сообщить селену?

+0

Я спросил у поддерживающего плагина, что они думают об этом исправлении: https://github.com/01org/af-carousel/issues/1 –