проблемы с разными браузерами


(lexand) #1

столкнулись с рядом проблем (вообще активно начали использовать селеним с AJAX+RIA только вот-вот)

разрабатываем приложение на ExtJS

FF - не может найти элемент, если тот вылазит, за пределы окна браузера. Например открыли окно, а кнопки управление окном (свернуть/равернуть/закрыть) выпали из видимости. Причем селениум даже не ждет время указанное в implicitWait 

Chrome - не может кликнуть по элементу, если этот элемент лежит под какимто другим (это вообще известный баг),  пришлось во время теста извращаться  - находить нужный элемент, увеличивать в нем z-index. Пока проверили только на поле ФАЙЛ. Боюсь что окажется нельзя и скрытые поля заполнять значениями. 

IE - не может кликнуть по элементам которые в DIV с overflow=auto, нужно сролить (фф кликает, хром - скролит сам)

уже это както немного сбивает с автоматизации тестирования

нам казалось напишем один тест прогоним по всем браузерам и дело в шляпе по крайней мере так неплохо работало для обычных сайтов

оказалось что тест приходится писать на чуть ли не специально для каждого браузера

может мы не правильно походим к воспросу тестирования


(AlexAlex) #2

WebDriver philosophy: We want to simulate a human user, which interacts with a browser.

Если пользователь (ну, то есть, WebDriver) не видит элементы - то он с ними ничего сделать и не может.

Вроде, как-то так. Нужно просто привыкнуть.


(Mykhailo Poliarush) #3

вы с этим ничего не сделаете, а тем более если вы делаете ваше приложение на ExJS

когда дело обстоить с javascript, то разные браузеры по разному работают, к сожалению

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

тут надо или знать эти ньансы, или нанимать человека, который уже программировал с помощью selenium и знает подводные камни

или смириться и жить с этим

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


(apetrovskiy) #4

Так всегда же можно кликнуть куда угодно через инжекцию джава скрипта.

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


(Mykhailo Poliarush) #5

ну и да, javascript это панацея от многих проблем и ньяансов selenium webdriver

лушчего его знать, чем не знать :)


(Kovalev07) #6

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

 

Вы движитесь не в правильном направлении.

Если элемент лежит под другим элементом то на него нельзя кликнуть. И это вполне логично.

Скорее всего вам нужно пересмотреть свое приложение.

так как вы сами выразились что "находить нужный элемент, увеличивать в нем z-index" это извращение.


(Kovalev07) #7

FF - не может найти элемент, если тот вылазит, за пределы окна браузера. Например открыли окно, а кнопки управление окном (свернуть/равернуть/закрыть) выпали из видимости. Причем селениум даже не ждет время указанное в implicitWait 

 

В моем приложении выводилась на стрнице большая таблица с данными. И на странице были полосы прокрутки.

И нужно было кликнуть по элементу который был за пределами видимой области. Вот метод из java который я использовал:

http://selenium.googlecode.com/svn/trunk/docs/api/java/org/openqa/selenium/internal/Locatable.html#getLocationOnScreenOnceScrolledIntoView()


(lexand) #8

тут как бы без вариантов
ничего и не персмотришь

поле формы для ввода файла, оборачивается ExtJS'ом для красивости ну и для однообразности работы с элементами формы

и без этого извращения ни как не возможно задать нужный файл

 

 


(lexand) #9

опять же, тот же самый ExtJS

полос прокрутки нет, приложения а-ля десктоп, окно в этом десктопе вылезло за граници окна браузера.... ну дальше вы знаете

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

 

спасибо за метод, попробуем после НГ

кстати ))

с наступающим всех


(Kovalev07) #10

Может быть вам тогда вводить текст не в WebElement, а использовать javascript document.getElementById(...).value = вашезначение.

и не нужно будет извращаться.


(Mykhailo Poliarush) #11

тогда вам надо пользоваться javascript для взаимодействия с вашими элементами

это получается не сильно красиво, но задачу решает


(Mykhailo Poliarush) #12

если вы все попробовали и у вас ничего не работает

переходите к javascript

там все можно нажимать и за пределами экрана 

а также например перемещать объект в видимую часть экрана и т.д.

 

в общем, как я и говорил "javascript - это панацея от многих проблем и ньансов selenium webdriver"