Перейти к содержимому

Фотография

Не работает MouseDown()

webdriver mousedown actions

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 4

#1 Rasda

Rasda

    Новый участник

  • Members
  • Pip
  • 6 сообщений


Отправлено 18 февраля 2014 - 07:06

Проблема следующая: Необходимо навести курсор на кнопку и зажать левую клавишу мыши, чтобы появилось выпадающее меню. Пыталась реализовать и напрямую через интерфейс IMouse и через Actions. Браузер FireFox. До версии webdriver 2.31 работало через интерфейс IMouse, после обновлений перестало.

 

Через интерфейс это выглядит примерно так:

var builder = new Actions(_webDriver);

builder.MoveToElement(Helper.GetWdElement(_webDriver, locator), 0, 0).Build().Perform();

 

var hoverItem = (ILocatable) Helper.GetWdElement(_webDriver, locator);

OpenQA.Selenium.

 

IMouse mouse = ((IHasInputDevices) _webDriver).Mouse;

mouse.MouseDown(hoverItem.Coordinates);

 

Через Actions:

var builder = new Actions(_webDriver);

builder.MoveToElement(Helper.GetWdElement(_webDriver, locator), 0, 0).Build().Perform();var hoverItem = Helper.GetWdElement(_webDriver, locator);

           var builder = new Actions(_webDriver);
           builder.ClickAndHold(hoverItem).Build().Perform();

 

Оба варианта сейчас вылетают с ошибкой: UnknownError: Cannot press more then one button or an already pressed button.' when calling method: [wdIMouse::down]

Помогите, пожалуйста, разобраться

 


  • 0

#2 Rasda

Rasda

    Новый участник

  • Members
  • Pip
  • 6 сообщений


Отправлено 18 февраля 2014 - 11:08

С ситуацией разобралась. Теперь оба варианта работают нативным образом. Поэтому MouseDown() первый раз срабатывает, как оказалось, а во второй выдает ошибку, необходим MouseUp()


  • 0

#3 loggos

loggos

    Новый участник

  • Members
  • Pip
  • 10 сообщений
  • ФИО:Егор Забелин


Отправлено 23 октября 2014 - 14:12

такая же проблема. есть метод:

 
public void MouseMove()
{
            var location = ((ILocatable)BaseElement).Coordinates;
            var mouse = ((IHasInputDevices)WebDriver).Mouse;
            mouse.MouseMove(location);
}
 
где BaseElement это элемент IWebElement
 
падает с ошибкой как раз во время вызова mouse.MouseMove(location):
UnknownError: Cannot press more then one button or an already pressed button.'UnknownError: Cannot press more then one button or an already pressed button.' when calling method: [wdIMouse::down]
Под дебагом смотрел, передается корректный локатор.
 
Самое интересное, что в хроме все хорошо. Можект кто сталкивался?
 
WebDriver 2.43.1
FF 33
 
Может кто-то сможе помочь разобраться, в чем проблема!

  • 0

#4 loggos

loggos

    Новый участник

  • Members
  • Pip
  • 10 сообщений
  • ФИО:Егор Забелин


Отправлено 23 октября 2014 - 16:37

Использование самого MouseMove() было необходимым для выделения нескольких элементов на странице (в связке с MouseMove и MouseUp).

В итоге, другим способом получилось выделить необходимые эелементы используя Actions:

 
var actionBuilder = new Actions(BrowserDriverResolver.Driver.WebDriver);
actionBuilder.ClickAndHold(BaseElement).MoveToElement(BaseElementSecond).Click().Build().Perform();
 
где BaseElement и BaseElementSecond это элементы IWebElement.
 
Но проблема с другим (вышеописанным) способом все так же актуальна!!! Если кто-то знает причину, буду рад услышать!

  • 0

#5 barancev

barancev

    Администратор

  • Admin
  • PipPipPipPipPipPip
  • 6 871 сообщений
  • ФИО:Алексей Баранцев
  • Город:Россия, Москва


Отправлено 24 октября 2014 - 14:27

actionBuilder.ClickAndHold(BaseElement).MoveToElement(BaseElementSecond).Click().Build().Perform();

 

Проблема в этой строке -- невозможно сделать Click, если кнопка мыши уже зажата и не отпущена после ClickAndHold.


  • 0
Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium



Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных