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

Фотография

Странная обработка нажатия на ссылку


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

#1 TC_Noob

TC_Noob

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

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

Отправлено 07 декабря 2010 - 19:14

Всем привет!

Хочется вот, что узнать - как?

Ситуация:
Имеется ссылка и имеется div-объект, который перекрывает эту самую ссылку

Проблема:
Когда работает Selenium, то нажатие по ссылке отрабатывается и скрипт идёт дальше, а вот когда руками (фактически то, что пользователь и выполняет, работая с сайтом), то перекрывающий ссылку div-объект - не даёт ничего сделать, что очевидно

Если коротко, Selenium выполняет нажатие, руками - не выполняется.

Вопрос:
Как быть и как отлавливать такие ситуации?

Спасибо за внимание, жду комментариев :)
  • 0

#2 barancev

barancev

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

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


Отправлено 07 декабря 2010 - 20:14

Как быть и как отлавливать такие ситуации?

В общем случае -- никак.
Именно поэтому ручное тестирование не нужно никогда прекращать, даже если вы всё-всё-всё автоматизировали.
  • 0
Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium

#3 TC_Noob

TC_Noob

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

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

Отправлено 07 декабря 2010 - 20:39


Как быть и как отлавливать такие ситуации?

В общем случае -- никак.
Именно поэтому ручное тестирование не нужно никогда прекращать, даже если вы всё-всё-всё автоматизировали.


Стоп, стоп, стоп...Алексей, правильно ли я понял Вас

получается, Selenium - не работает как обычный пользователь, т.е. не кликает, не нажимает, не вводит, а работает на уровне взаимодействия с браузером ниже, чем это может выполнить рядовой пользователь?
  • 0

#4 LeshaL

LeshaL

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

  • Members
  • PipPipPipPipPipPip
  • 1 094 сообщений
  • ФИО:Алексей Лянгузов
  • Город:Saint-Petersburg


Отправлено 07 декабря 2010 - 21:01

Всем привет!

Хочется вот, что узнать - как?

Ситуация:
Имеется ссылка и имеется div-объект, который перекрывает эту самую ссылку

Проблема:
Когда работает Selenium, то нажатие по ссылке отрабатывается и скрипт идёт дальше, а вот когда руками (фактически то, что пользователь и выполняет, работая с сайтом), то перекрывающий ссылку div-объект - не даёт ничего сделать, что очевидно

Если коротко, Selenium выполняет нажатие, руками - не выполняется.

Вопрос:
Как быть и как отлавливать такие ситуации?

Спасибо за внимание, жду комментариев :)

По простому никак. Даже если селениум умеет подтаскивать мышу в область обекта и генерить клик, а не эмулировать событие onclick для ссылки, то тоже есть вероятность того, что не найдется баг. Болтон на своем тренинге именно такую ситуацию показывал. Даже человек может не найти, если кликает в нужном месте, а перекрытие частичное.
По сложному, наверное можно попробовать, но не гарантированно. Например можно обратиться к BOX модели и по координатам смотреть кто-кого перекрывает и кто у кого парентом. Это гемор, но что-то тут можно поделать. Еще вариант - покопать в сторону event bubbling и capturing. Тут можно всем элементам нараздавать своих onclick-ов, а сэмулировать клик на нужном и посмотреть куда всплывет ивент. Хотя не берусь сказать, что это работает, если элементы разных слоев наложились.
  • 0
Regards,
Alexey

#5 barancev

barancev

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

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


Отправлено 07 декабря 2010 - 21:12

Стоп, стоп, стоп...Алексей, правильно ли я понял Вас

получается, Selenium - не работает как обычный пользователь, т.е. не кликает, не нажимает, не вводит, а работает на уровне взаимодействия с браузером ниже, чем это может выполнить рядовой пользователь?

Да. Да! ДА!!!! И не только Selenium :)

Selenium, по сути -- это движок, написанный на JS, который умеет выполнять некоторый набор команд. Вы же, как пользователь, не работаете с браузером, выполняя JS-команды?

Selenium 2.0 в этом отношении чуть лучше, он более точно эмулирует действия пользователя.
Например, он не позволяет нажать на невидимую кнопку (и некоторые тестировщики, кстати, уже возмущаются по этому поводу :))
Но всё равно он не замечает, что объекты перекрываются, потому что тоже работает с объектами.

Хотите идеальной точности воспроизведения действий пользователя -- вычисляйте координаты объектов, и эмулируйте нажатия кнопки мыши в заданном месте экрана, на уровне оконной оболочки.
Может быть, кстати, есть фреймворки, которые именно так делают? Я не знаю.

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

#6 TC_Noob

TC_Noob

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

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

Отправлено 07 декабря 2010 - 21:44

Господа, спасибо за ответы!

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

НЕТ, господа, мне такого "добра" и даром не надо!

А главное, НИКТО НЕ ГОВОРИТ о том, что Selenium является банальным обманом неопытных тестировщиков.
  • 0

#7 barancev

barancev

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

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


Отправлено 07 декабря 2010 - 21:50

Господа, спасибо за ответы!

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

НЕТ, господа, мне такого "добра" и даром не надо!

А главное, НИКТО НЕ ГОВОРИТ о том, что Selenium является банальным обманом неопытных тестировщиков.

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

#8 TC_Noob

TC_Noob

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

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

Отправлено 07 декабря 2010 - 22:07

Если бы только Selenium... Они все, все такие!!!


Например, TestComplete - нет, так же как и HP WinRunner, HP QTP, IBM Rational Robot

Автоматизация -- это заговор, целью которого является подрыв доверия к тестированию :)


Автоматизация - помошник при регрессии и сложных операциях, Алексей, да вы и сами лучше меня это знаете :)
  • 0

#9 SergeyP

SergeyP

    Специалист

  • Members
  • PipPipPipPipPip
  • 651 сообщений
  • Город:Москва

Отправлено 08 декабря 2010 - 05:14

Если бы только Selenium... Они все, все такие!!!
Автоматизация -- это заговор, целью которого является подрыв доверия к тестированию :)


Алексей ! Можно с этого места поподробнее ?

PS
Я не представляю, чтобы я делал без benchmark при выборе железа, а ведь это и есть автоматизация тестирования микропрограммам, которыми напичкано железо !

PSPS
Предлагаю сделать опрос, нужна ли автоматизация тестирования ?
  • 0

#10 ch_ip

ch_ip

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

  • Members
  • PipPipPipPipPipPip
  • 1 097 сообщений
  • ФИО:Павел Абдюшев
  • Город:Москва


Отправлено 08 декабря 2010 - 07:26


Если бы только Selenium... Они все, все такие!!!


Например, TestComplete - нет, так же как и HP WinRunner, HP QTP, IBM Rational Robot

Увы, да.
С помощью QTP можно нажать на невидимые ссылки, вводить значение в задисейбленные контролы и вообще взаимодействовать с интерфейсом так, как это не сможет сделать ни один нормальный пользователь.
То же самое верно в отношении WinRunner, Robot'a и скорее всего TestComplete (с ним знаком теоретически, но не думаю, что там принципы работы с объектами сильно отличаются)
  • 0

#11 OVA

OVA

    Опытный участник

  • Members
  • PipPipPipPip
  • 405 сообщений
  • ФИО:Высоцкий Сергей Павлович
  • Город:Новосибирск

Отправлено 08 декабря 2010 - 07:31

Ну во многих тулах можно "честно" кликать по координатам и заниматься распознаванием картинок. Это будет вполне себе "честная" автоматизация. Вопрос поддержания, стабильности и написания таких автоматических тестов оставим в стороне.
  • 0

#12 frei_by

frei_by

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

  • Members
  • PipPipPip
  • 177 сообщений
  • ФИО:Дмитрий

Отправлено 08 декабря 2010 - 07:35

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

продолжение можно посмотерть здесь
http://masu-inform.r...s/sravnenie.ppt
  • 0

#13 ch_ip

ch_ip

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

  • Members
  • PipPipPipPipPipPip
  • 1 097 сообщений
  • ФИО:Павел Абдюшев
  • Город:Москва


Отправлено 08 декабря 2010 - 07:42

какая смешная тема.
я думаю что selenium 3.0 будет выпускатся в виде робота в человеческий рост...

И называться он будет Selenium 3D
  • 0

#14 SergeyP

SergeyP

    Специалист

  • Members
  • PipPipPipPipPip
  • 651 сообщений
  • Город:Москва

Отправлено 08 декабря 2010 - 07:42

Ну во многих тулах можно "честно" кликать по координатам и заниматься распознаванием картинок. Это будет вполне себе "честная" автоматизация. Вопрос поддержания, стабильности и написания таких автоматических тестов оставим в стороне.


Не удачный пример: в посте рассматривался вопрос о возможностях работы с двумя контролами, один из который полностью перекрывает другой. Поэтому использование картинок в данном случае невозможно.
  • 0

#15 OVA

OVA

    Опытный участник

  • Members
  • PipPipPipPip
  • 405 сообщений
  • ФИО:Высоцкий Сергей Павлович
  • Город:Новосибирск

Отправлено 08 декабря 2010 - 07:45

Не удачный пример: в посте рассматривался вопрос о возможностях работы с двумя контролами, один из который полностью перекрывает другой. Поэтому использование картинок в данном случае невозможно.

Эээ... Почему же?
  • 0

#16 SergeyP

SergeyP

    Специалист

  • Members
  • PipPipPipPipPip
  • 651 сообщений
  • Город:Москва

Отправлено 08 декабря 2010 - 07:46



Не удачный пример: в посте рассматривался вопрос о возможностях работы с двумя контролами, один из который полностью перекрывает другой. Поэтому использование картинок в данном случае невозможно.

Эээ... Почему же?


Я о контроле, который закрыт..

PS
Мы начали удаляться о темы поста...
  • 0

#17 OVA

OVA

    Опытный участник

  • Members
  • PipPipPipPip
  • 405 сообщений
  • ФИО:Высоцкий Сергей Павлович
  • Город:Новосибирск

Отправлено 08 декабря 2010 - 07:48

Я о контроле, который закрыт..

Если мы можем получить его картинку, то тест "честно" свалится не найдя контрола. А пока текущие условия не говорят нам что контрол был закрыт всегда и что мы никакими "честными" способами не можем получить его картинку.
  • 0

#18 LeshaL

LeshaL

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

  • Members
  • PipPipPipPipPipPip
  • 1 094 сообщений
  • ФИО:Алексей Лянгузов
  • Город:Saint-Petersburg


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

Я о контроле, который закрыт..

Если мы можем получить его картинку, то тест "честно" свалится не найдя контрола. А пока текущие условия не говорят нам что контрол был закрыт всегда и что мы никакими "честными" способами не можем получить его картинку.

Может сработать, если то что сверху не прозрачное.
  • 0
Regards,
Alexey

#19 OVA

OVA

    Опытный участник

  • Members
  • PipPipPipPip
  • 405 сообщений
  • ФИО:Высоцкий Сергей Павлович
  • Город:Новосибирск

Отправлено 08 декабря 2010 - 08:22

Может сработать, если то что сверху не прозрачное.

Сейчас вот честно взял Silkuli - ок, он нашел картинку, но клик все равно не отработал. Почему? А потому что ушел он не объекту а в энную область экрана, где совсем не тот объект. Как-то так.
  • 0

#20 stmark

stmark

    Опытный участник

  • Members
  • PipPipPipPip
  • 404 сообщений
  • ФИО:Докучаев Сергей
  • Город:Ярославль


Отправлено 08 декабря 2010 - 09:29

Если бы только Selenium... Они все, все такие!!!
Автоматизация -- это заговор, целью которого является подрыв доверия к тестированию :)


Алексей, вот Вы съюморили, а люди восприняли всерьёз, теперь создадут секту Ручного тестирования и будут устраивать шествия с плакатами "Долой Selenium!", "Автотесты зло!", "Удали TC - повысь качество!" :)

1. Перед тем как запускать тесты, стоит делать скриншоты узловых страниц, таким образом вероятность того, что Selenium упустит баг, будет крайне мала.
2. Как уже сказали, можно кликать по координатам, соответственно усовершенствовать методы Selenium'а, думаю у многих в своих фреймворках не мало таких примеров.
  • 0


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

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