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

Фотография

Selenium: работа с message box


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

#1 achumagin

achumagin

    Активный участник

  • Members
  • PipPip
  • 145 сообщений
  • ФИО:Alexey Chumagin
  • Город:Казань

Отправлено 06 сентября 2010 - 19:51

Всем привет.
продолжаю изучать selenium в связке с phpunit + php, а заодно и тестирование web приложений.
Столкнулся со следующей трудностью.
Не могу нажать на кнопку "удалить" в message box

Элемент который нужно нажать указано стрелочкой
Прикрепленный файл  2010-09-06_2342.png   29,3К   55 Количество загрузок:


Пробовал разные виды нажатия а именно:

$this->selenium->mouseDown("//*[@id='button1_2']");
$this->selenium->mouseUp("//*[@id='button1_2']");

$this->selenium->clickAT("//*[@id='button1_2']","10,10");

$this->selenium->click("//*[@id='button1_2']");


с фокусировкой на окне через focus()

Не помогает и все тут. может есть у кого какие нибудь идеи.
P.S. нативные нажатия тоже не помогают, так как окно не реагирует на enter
  • 0
ap-test-team.blogspot.com

#2 contestar

contestar

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

  • Members
  • Pip
  • 36 сообщений
  • ФИО:Алексей

Отправлено 07 сентября 2010 - 10:39

У вас на скриншоте id кнопки = button2_2, вы кликаете на id=button1_2. ID точно не динамический?
  • 0

#3 achumagin

achumagin

    Активный участник

  • Members
  • PipPip
  • 145 сообщений
  • ФИО:Alexey Chumagin
  • Город:Казань

Отправлено 07 сентября 2010 - 19:55

Добрый день.
Как я понял id действительно динамический, потому что если закрыть и открыть message box то кнопка уже станет button3_2 и так далее (button4_2), пока не перезагрузишь страницу.
Как я понимаю в таких случаях нужно привязываться в статическому объекту и от него уже прокладывать путь. Или есть другой способ?
  • 0
ap-test-team.blogspot.com

#4 contestar

contestar

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

  • Members
  • Pip
  • 36 сообщений
  • ФИО:Алексей

Отправлено 07 сентября 2010 - 21:29

К id-шнику не обязательно привязываться (я это вообще не люблю и не применяю). Например, так:
1. click("//div[@class='box_controls']/div[@class='button_yes']/div");
2. click("//div[text()='Удалить']");
3. click("//div[@class='box_controls']/div[2]");

Список можно продолжить.
Вместо xpath есть вариант определить элемент используя css (говорят на IE быстрее).
  • 0

#5 enki86

enki86

    Постоянный участник

  • Members
  • PipPipPip
  • 231 сообщений


Отправлено 08 сентября 2010 - 03:42

Вместо xpath есть вариант определить элемент используя css (говорят на IE быстрее).

Врут
  • 0

#6 barancev

barancev

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

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


Отправлено 08 сентября 2010 - 05:33

Вместо xpath есть вариант определить элемент используя css (говорят на IE быстрее).

Врут

Не, не врут, правда быстрее :)
По крайней мере на версиях 6 и 7, для восьмёрки я не проверял.
  • 0
Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium

#7 KaNoN

KaNoN

    АЦЦКИЙ СОТОНА

  • Members
  • PipPipPipPipPipPip
  • 1 260 сообщений
  • ФИО:Колесник Николай
  • Город:Днепропетровск > Киев > Лондон

Отправлено 08 сентября 2010 - 06:34


Вместо xpath есть вариант определить элемент используя css (говорят на IE быстрее).

Врут

Не, не врут, правда быстрее :)
По крайней мере на версиях 6 и 7, для восьмёрки я не проверял.

Как показывает практика, CSS быстрее только для простых случаев, а вот когда идут уже переходы по иерархии, то разница в скорости уже не заметна: тормозит одинаково :biggrin:
  • 0

#8 contestar

contestar

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

  • Members
  • Pip
  • 36 сообщений
  • ФИО:Алексей

Отправлено 08 сентября 2010 - 09:17

Как показывает практика, CSS быстрее только для простых случаев, а вот когда идут уже переходы по иерархии, то разница в скорости уже не заметна: тормозит одинаково

Меня спасает
selenium.useXpathLibrary("javascript-xpath");
Заметно быстрее работает.
  • 0

#9 achumagin

achumagin

    Активный участник

  • Members
  • PipPip
  • 145 сообщений
  • ФИО:Alexey Chumagin
  • Город:Казань

Отправлено 09 сентября 2010 - 19:44

К id-шнику не обязательно привязываться (я это вообще не люблю и не применяю). Например, так:
1. click("//div[@class='box_controls']/div[@class='button_yes']/div");
2. click("//div[text()='Удалить']");
3. click("//div[@class='box_controls']/div[2]");

Список можно продолжить.
Вместо xpath есть вариант определить элемент используя css (говорят на IE быстрее).


Спасибо за ответ.
Но на кнопку не нажимает. ну или нажимает но ничего не происходит
Самое интересное то что пути прописываются верно по крайне мере getText() возвращает то что написано на кнопке.

пробовал методы:
click
clickAt
mouseDown и mouseUp
  • 0
ap-test-team.blogspot.com

#10 contestar

contestar

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

  • Members
  • Pip
  • 36 сообщений
  • ФИО:Алексей

Отправлено 10 сентября 2010 - 07:31

Но на кнопку не нажимает. ну или нажимает но ничего не происходит
Самое интересное то что пути прописываются верно по крайне мере getText() возвращает то что написано на кнопке.

Встречался однажды с такой проблемой при тестировании приложений на Tibco GI. Объект видит, но не кликает на него. Пришлось выкручиваться - роботом по координатам. Конечно же так нельзя делать..но это был единственный вариант. Потом попробовал selenium 2 - он отлично справился с этим объектом.
  • 0

#11 achumagin

achumagin

    Активный участник

  • Members
  • PipPip
  • 145 сообщений
  • ФИО:Alexey Chumagin
  • Город:Казань

Отправлено 13 сентября 2010 - 06:40

спасибо. за ответ.
Может еще у кого нибудь есть идеи?
  • 0
ap-test-team.blogspot.com

#12 barancev

barancev

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

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


Отправлено 13 сентября 2010 - 07:01

В общем, по коду видно, что это не "настоящая кнопка", а на какой-то из вложенных div-ов навешены какие-то обработчики каких-то событий.
Поэтому нужно сначала их выявить, а потом придумать, как эти события вызывать. Если не удастся найти подходящий элемент и подходящую команду, на крайний случай есть fireEvent, а также возможность запустить любой JS-код через getEval.
  • 0
Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium

#13 achumagin

achumagin

    Активный участник

  • Members
  • PipPip
  • 145 сообщений
  • ФИО:Alexey Chumagin
  • Город:Казань

Отправлено 18 сентября 2010 - 13:31

В общем, по коду видно, что это не "настоящая кнопка", а на какой-то из вложенных div-ов навешены какие-то обработчики каких-то событий.
Поэтому нужно сначала их выявить, а потом придумать, как эти события вызывать. Если не удастся найти подходящий элемент и подходящую команду, на крайний случай есть fireEvent, а также возможность запустить любой JS-код через getEval.


Спасибо за совет.
Удалось нажать на кнопку используя js-код и getEval
  • 0
ap-test-team.blogspot.com


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

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