Селен действия мыши moveToElement doesn&#39 WebDriver; t поднимают событие mouseOut на Firefox Linux

Я пытался проверить tooltip в своей веб-странице, используя Селен WebDriver с Firefox 19.
Я в основном пытаюсь использовать действия мыши, чтобы нависнуть над элементом, которому приложили tooltip, чтобы проверить, что tooltip показан и нависать над другим элементом, чтобы проверить, что tooltip скрыт. Первая операция хорошо работает, но нависая над другим элементом tooltip остается видимым. Эта проблема не происходит, проверяя веб-страницу вручную.
Кто-либо еще столкнулся с этой проблемой прежде? Я использую Ubuntu 12.04.

4
nl ja de

4 ответы

Кажется, что Продвинутый API Действий полагается на родные события, которые отключены в версии Linux Firefox по умолчанию. Поэтому им нужно позволить в случае WebDriver явно.

FirefoxProfile profile = new FirefoxProfile();
//explicitly enable native events(this is mandatory on Linux system, since they
//are not enabled by default
profile.setEnableNativeEvents(true);
WebDriver driver = new FirefoxDriver(profile);

Also, in my case I needed to upgrade the WebDriver to version 2.31 since the hover(moveToElement) action did not work properly on 2.30 even with native events explicitly enabled. Tested this with version 2.31 of WebDriver and versions 17 and 19 of Firefox on Linux. For more information you may check this link:
http://code.google.com/p/selenium/wiki/AdvancedUserInteractions#Native_events_versus_synthetic_events

5
добавлено
Это было точно моей проблемой. Я нашел, что .click() работал правильно с Действиями, но что-либо, что непосредственно управляло мышью (такой как движение или тянущийся) не было функционально. Устанавливая это в то время, когда водитель создается, исправил проблему.
добавлено автор AndyPerfect, источник

У меня была та же самая проблема. Сначала я использовал метод moveToElement() без выступают() . Тогда я добавил Профиль Firefox с setEnableNativeEvents , но это все еще не работало на меня. Наконец я решил эту проблему таким образом (просто, добавляя , выступают() :

WebElement username = driver.findElement(By.id("username"));
Actions actions = new Actions(driver);
actions.moveToElement(username).perform();
WebElement tooltip = driver.findElement(By.id("tooltip"));
tooltip.isDisplayed();

и это хорошо работает.

1
добавлено

Это - простой, но удобный метод с вызовом JavaScript, который пошлет mouseout() событие к тому, какой бы ни элемент, который вы определяете (я предпочитаю передавать их использующий, но можно изменить это на то, что вы любите.

У меня была проблема с Хромом, где tooltips отказывались закрываться когда-то щелкнувший и затенили другие соседние события щелчка, заставляющие их потерпеть неудачу. Этот метод спас день в этом случае. Надежда это помогает кому-то еще!

 /**
 * We need this to close help text after selenium clicks
 * (otherwise they hang around and block other events)
 * 
 * @param by
 * @throws Exception
 */
public void javascript_mouseout(By by) throws Exception {
    for (int i=0; i<10; i++) {
        try {
            JavascriptExecutor JS = (JavascriptExecutor)driver;
            WebElement element = driver.findElement(by);
            js.executeScript("$(arguments[0]).mouseout();", element);
            return;
        } catch (StaleElementReferenceException e) {
           //just catch and continue
        } catch (NoSuchElementException e1) {
           //just catch and continue
        }
    }
}

Можно назвать его после любого вида щелчка() событие как это:

By by_analysesButton = By.cssSelector("[data-section='Analyses']");
javascript_mouseout(by_analysesButton);

К вашему сведению шахта пробует 10x через для петли с попыткой/выгодами, потому что у нашего приложения есть тенденция с Хромом к несвежим исключениям элемента, поэтому если у вас нет этой проблемы, метод может быть значительно срезан.

1
добавлено

Я также сталкиваюсь с этой проблемой с Селеном 2.30 на Firefox 19. Это хорошо работает на FF 18.2.

1
добавлено
Вы находили какую-либо работу для этой проблемы? Я пытаюсь проверить его на Firefox на Mac.
добавлено автор nids, источник
pro.jvm
pro.jvm
3 503 участник(ов)

Сообщество разработчиков Java Scala Kotlin Groovy Clojure Чат для нач-их: @javastart Наш сайт: projvm.com projvm.ru Наш канал: @proJVM Вакансии: @jvmjobs Конфы: @jvmconf

Верстка сайтов HTML/CSS/JS/PHP
Верстка сайтов HTML/CSS/JS/PHP
3 439 участник(ов)

Правила группы: напишите !rules в чате. Группа Вк: vk.com/web_structure Freelancer: @web_fl Веб Дизайн: @dev_design Маркетолог: @topmarkening Автор: @M_Boroda

Java & Co
Java & Co
2 370 участник(ов)

Можно обсуждать с матом и без всё, что касается жабы, вплоть до холиваров. НЕ ИМЕЕТ ОТНОШЕНИЯ К САЙТУ JAVARUSH.RU ПРАВИЛА - https://t.me/javarush/75723 Вакансии сюда - https://telegram.me/joinchat/B7IzvUCnfo6d8t3yIxKguQ По вопросам - @thedude

learn.java
learn.java
1 888 участник(ов)

Чат для начинающих и не только Статистика: https://combot.org/chat/-1001083535868 Основной чат - @jvmchat

Чат — Типичный Верстальщик
Чат — Типичный Верстальщик
1 080 участник(ов)

Основной канал: @tpverstak Обратная связь: @annblok Все ссылки на соц.сети проекта: http://taplink.cc/tpverstak ПРАВИЛА ЧАТА — https://teletype.in/@annblok/BygPgC3E7

Java Underground
Java Underground
169 участник(ов)

https://vk.com/javatutorial

Веб-Технологи: UI/UX, Вёрстка, Фронтенд
Веб-Технологи: UI/UX, Вёрстка, Фронтенд
167 участник(ов)

Всё про веб-дизайн и вёрстку. А также: HTML, CSS, флекс и бутстрапы, шаблонизаторы, препроцессоры, методологии, аглифаеры, улучшаторы и обфускаторы. Обсуждаем темы юзабилити, устраиваем А/В тесты лендингов, и проводим аудит.

DTP :: @DTPublish
DTP :: @DTPublish
147 участник(ов)

Обсуждаемые темы: полиграфия, препресс, верстка, дизайн, иллюстрации, скрипты, плагины. Канал - @DTPublishing

Javanese Questions
Javanese Questions
109 участник(ов)

Чат предназначен для обмена знаниями строго в формате в вопрос-ответ. Тема — Java, Kotlin и Android. Вопрос должен быть предварительно прогуглен, понятно и грамотно сформулирован, помечен хэштегами. Ответ — тем более. Куски кода размером в несколько строк можно писать прямо здесь, для больших кусков кода стоит использовать http://gist.github.com/, http://pastebin.com/, https://codeshare.io/ или любой аналогичный сервис. В некоторых случаях можно прикреплять скриншоты. Стикеры и гифки запрещены. Дополнять и уточнять вопросы и ответы — редактированием исходного сообщения. Обсуждения должны приводить к редактированию вопроса/ответа и удаляться. По хештегам можно искать существующие вопросы и овтеты: #вопрос #ответ #git #generics #java #server #awt #javafx #swing #kotlin #anko #tornadofx #ktor #android #recyclerView #performance #arch #network #permissions #storage #async