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

Фотография

Покоординатный клик с помощью WebDriver


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

#1 Fruzenshtein

Fruzenshtein

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

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

Отправлено 28 марта 2011 - 10:32

Добрый день. Составляя очередной тест с помощью WebDriver'a (Selenium 2.0) я столкнулся со следующей задачей.

Мне необходимо сделать клик в определенную координату (х;у). Как это можно сделать средствами WebDriver'a? :help:
  • 0

#2 Genka

Genka

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 328 сообщений
  • ФИО:Геннадий Алпаев
  • Город:Украина, Днепр


Отправлено 28 марта 2011 - 14:10

У нас используется вебдрайвер + питон, так нам пришлось извернуться.
Есть такая библиотека для эмуляции drag-n-drop'a (это аддон для jQuery)
https://github.com/e...jquery-simulate

Мы загружаем эту библиотеку в браузер с помощью script_execute, потом у нас есть написанный метод drag_drop, который с помощью этой самой библиотеки может нажать кнопку мыши в одних координатах, а затем отпустить в других. Соответственно, есть метод click_at, который нажимает и отпускает снопку мыши в одних и тех же координатах.

Реализация drag_drop'a примерно такая:

    # библиотека загружается раньше
    def drag_drop(self, element_id, x_coord, y_coord, delta_x, delta_y):
        """ Simulates drag-n-drop operation within the specified element

        script = """
        $('#%s').simulate('drag', {x:%d, y:%d, dx:%d, dy:%d});
        """ % (element_id, x_coord, y_coord, delta_x, delta_y)
        self.execute_script(script)


правда, саму библиотеку тоже пришлось немного "подкрутить", чтобы оно нормально заработало
  • 0

TestComplete для начинающих (видеозаписи курса)

Software Testing Automation Tips (50 вещей, которые должен знать каждый автоматизатор, книга на английском языке)

Онлайн-учебник "Автоматизация тестирования от «А» до «Ы»"
Сборник рецептов по TestComplete (книга на английском языке)
Онлайн-учебник по TestComplete
Онлайн-учебник по SilkTest


#3 Fruzenshtein

Fruzenshtein

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

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

Отправлено 28 марта 2011 - 14:28

2Genka

Спасибо за ответ. Но в моем случае можно использовать только WebDriver.
Сейчас у меня задача состоит в том, чтобы задать аргумент для подчеркнутого элемента click().Coordinates.

driver.getMouse().click();

click() может принимать параметры типа Coordinates

Но как задать Coordinates?
  • 0

#4 barancev

barancev

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

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


Отправлено 29 марта 2011 - 08:35

По-новому это надо делать посредством Advanced User Interactions API

Выглядеть это будет примерно так:


ActionChainsGenerator builder = ((HasInputDevices) driver).actionsBuilder();
Action action = builder
    .moveToElement(elementLocator, xOffset, yOffset)
    .click()
    .build();
action.perform();

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

#5 Fruzenshtein

Fruzenshtein

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

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

Отправлено 29 марта 2011 - 12:24

Алексей, я попробую Ваш вариант и отпишусь о результате :good:
  • 0


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

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