- Форум тестировщиков
- → Публикации vitorg
Публикации vitorg
21 публикаций создано vitorg (учитываются публикации только с 06 июня 2023)
По типу контента
По пользователю
#132339 Подгрузка файла без input'а
Отправлено автор: vitorg 18 июля 2014 - 07:22 в Selenium - Functional Testing
Расхайдить и так всем понятно, а вот заэфпячить слышу в первый раз :)
#132269 Подгрузка файла без input'а
Отправлено автор: vitorg 16 июля 2014 - 20:46 в Selenium - Functional Testing
Сейчас используем первый вариант совместно с xvfb, соответственно проблемы одновременных нажатий нет.
#128994 Выбор из выпадающего списка
Отправлено автор: vitorg 03 апреля 2014 - 09:16 в Selenium - Functional Testing
Как я уже говорил, в данном конкретном примере разница скорее идейная, если придерживаться вашей идеи, то писать надо //select/option - тоже будет выбран первый элемент, но только в результате особенности работы Selenium с локаторами, я бы на месте Selenium для таких случаев выкидывал исключение типа MoreThanOneElementMatchedException и отправлял бы всех в сад :) Но в других ситуациях использование подобных конструкций может привести к неожиданному и неочевидному результату.
#128986 Выбор из выпадающего списка
Отправлено автор: vitorg 03 апреля 2014 - 08:38 в Selenium - Functional Testing
По спецификации select может содержать 2 типа тегов: <!ELEMENT SELECT - - (OPTGROUP|OPTION)+, не думаю, что есть законный способ поместить <input type=hidden/> внутрь select, но допускаю, что там могут оказаться и другие теги типа meta, script и т.п.
#128957 Выбор из выпадающего списка
Отправлено автор: vitorg 02 апреля 2014 - 15:13 в Selenium - Functional Testing
правильнее писать (//select/option)[1], а не //select/option[1]? При том, что наличие у select других чайлдов, отличных от option - это хак,баг и провокация. А при использовании сета есть вероятность "влететь" в совершенно другой селект.
Не думаю, что наличие у select других потомков отличных от option является хаком, даже наоборот, они там могут запросто оказаться и будут правы :D
Правильнее в данной ситуации исключительно потому, что (//select/option)[1] - это гарантированный возврат одного элемента, а //select/option[1] может вернуть любое количество элементов в зависимости от ситуации и от того как в будущем изменится вёрстка, т.е. это скорее идейно правильный подход, но результаты будут одинаковыми в данном примере. Если уж на то пошло, то и "[1]" в вашем варианте лишняя, первый элемент удачно выберется и так: //select/option... Но это исключительно удача :)
В реальной же ситуации надо конечно жёстко фиксировать select (по id или по привязке к форме в которой он находится и т.п.), а дальше уже выбирать конкретный option. Данный способ со скобками лично мне видится намного более однозначным и очевидным по принципу работы, плюс имеет меньше побочных эффектов.
#128934 Выбор из выпадающего списка
Отправлено автор: vitorg 02 апреля 2014 - 09:18 в Selenium - Functional Testing
Протестировал оба варианта на FF 28.0, среднее время поиска локатора составило 25 мс в обоих случаях (30 опытов на 100000 option'ах). Вы уверены, что на Opera использовали нативный XPath, какая версия? Думаю, что там далеко не всё так просто разворачивается и есть куча различных оптимизаций, работающих по-своему в каждом браузере, где-то будет быстрее один вариант, а где-то другой, ну и опять же от вёрстки всё сильно зависит.
#128913 Выбор ссылки
Отправлено автор: vitorg 01 апреля 2014 - 15:35 в Selenium - Functional Testing
Да, разницы почти нет, я скорее на автомате написал вариант со скобками как более однозначный.
Но если всё-таки хочется увидеть разницу, то она будет видна в этом примере:
<li><a></a></li> <span><li><a></a></li></span>
(//li)[2]/a - отработает как и требуется
//li[2]/a - не найдёт локатор, т.к. не существует в документе такого li который бы являлся вторым потомком своего родителя.
В этом основная тонкость, что если первый вариант говорит - "найди мне второй li в документе и верни его прямого потомка a", то второй вариант говорит "найди мне такой li который является вторым потомком своего родителя и дай мне его прямого потомка a" - зачастую это совсем не то, что требуется, но исключительно по счастливому стечению обстоятельств такая конструкция тоже иногда работает.
#128912 Выбор из выпадающего списка
Отправлено автор: vitorg 01 апреля 2014 - 15:33 в Selenium - Functional Testing
оператор [] в xpath имеет больший приоритет, чем //
Вы меня опередили, спасибо за ссылку :)
#128911 Выбор из выпадающего списка
Отправлено автор: vitorg 01 апреля 2014 - 15:30 в Selenium - Functional Testing
Абсолютно не очевидно - как и ваш ответ с соседней теме.
Покажите разницу между (//select[@id='country']/option)[1] и //select[@id='country']/option[1].
Могу подсказать что эти варианты отличаются как минимум производительностью, а первый вариант имеет достаточно "подводных камней".
Здесь скорее второй вариант имеет много подводных камней, т.к. выбирается всё множество для которого справедливо "//select[@id='country']/option[1]" - option является первым, и только счастливое стечение обстоятельств приводит к правильному выбору элемента. В то же время первый вариант достаточно однозначен.
Если же исходить из предположения, что документ гарантированно валиден, то конечно же не может быть второго select с id=country и в этом случае локаторы взаимозаменяемы, но всё-таки не эквивалентны. В варианте без скобок наложились слишком много удачных моментов благодаря которым он работает, но стоит шевельнуть немного вёрстку и такие конструкции чёрту ногу свернут если тот начнёт разбираться почему же не работает локатор.
Про производительность не могу ничего сказать однозначно, т.к. не сравнивал, но всё-таки подозреваю, что первый вариант (со скобками) должен быть более производительным, т.к. оперирует меньшими объёмами данных.
#128894 Выбор ссылки
Отправлено автор: vitorg 01 апреля 2014 - 13:36 в Selenium - Functional Testing
Нет, я ничего не предполагаю, а ответил исключительно на поставленный вопрос, пример показывал только как именно обратиться ко второму элементу массива, но совершенно не учитывал все тонкости конкретной вёрстки и особенности работы команды разработчиков ТС, впрочем, ваш вариант с фейлом лишь один из возможных и заранее нельзя сказать что будет лучше, это уже задача самого ТС определиться с выбором надёжности локатора. Обычно можно однозначно зацепиться за более высокий в иерархии элемент и знать, что там будет только один список.
#128887 Выбор из выпадающего списка
Отправлено автор: vitorg 01 апреля 2014 - 13:04 в Selenium - Functional Testing
Это разве не очевидно? Ответил на ваш пример в соседней теме.Обоснуйте
#128886 Выбор ссылки
Отправлено автор: vitorg 01 апреля 2014 - 13:01 в Selenium - Functional Testing
Что это значит? Если вы про фейл локатора (//li)[2]/a, то так и должно быть, локатор был не для этой разметки, а для приведённой в первом посте. В вашем случае он конечно ни с чем не совпадёт, т.к. его условие жёсткое - выбрать a во втором li, а во втором li нет a, на это и рассчитано. Хорошо не когда локатор совпал хоть с чем-то, а когда он совпал/не совпал именно с тем с чем требовалось.
Фейл<html> <head/> <body> <div> <li></li> <li></li> <li><a></a></li> </div> <div> <li></li> <li><a></a></li> <li></li> </div> </body> </html>
#128878 Выбор ссылки
Отправлено автор: vitorg 01 апреля 2014 - 12:19 в Selenium - Functional Testing
(//li)[2]/a
#128876 Выбор из выпадающего списка
Отправлено автор: vitorg 01 апреля 2014 - 12:13 в Selenium - Functional Testing
Правильнее всё-таки (//select[@id='country']/option)[1].
#128875 Выбор ссылки
Отправлено автор: vitorg 01 апреля 2014 - 12:11 в Selenium - Functional Testing
(//li)[2]
#128600 Headless запуск Selenium WebDriver
Отправлено автор: vitorg 25 марта 2014 - 08:05 в Selenium - Functional Testing
Т.е. на самом деле встречали такую ситуацию когда WebKit'овый браузер (та же версия движка) отрабатывает без проблем, а PhantomJS не фурычит?
#128579 Headless запуск Selenium WebDriver
Отправлено автор: vitorg 24 марта 2014 - 14:21 в Selenium - Functional Testing
Скорее всего вам поможет http://phantomjs.org - для него и драйвер соответствующий есть.
#128072 как не ждать загрузку страницы и не падать с ошибкой?
Отправлено автор: vitorg 11 марта 2014 - 14:36 в Selenium - Functional Testing
Самый простой способ перед вызовом open() установить небольшой timeout и после вызова вернуть его на место, но это достаточно кривой костыль для конкретного места когда заранее известно, что по данному URL высока вероятность торможения чего-то неважного.
Если серьёзно подойти к проблеме, то надо перегружать open() чем-то вроде open(myJavaScriptCode) где myJavaScriptCode будет сам решать достаточно ли загружена страница для продолжения теста.
#128067 как не ждать загрузку страницы и не падать с ошибкой?
Отправлено автор: vitorg 11 марта 2014 - 14:24 в Selenium - Functional Testing
Можно просто игнорировать (логировать конечно, но не падать) все эти исключения внутри WebDriver (или своей обёртки вокруг него) и просто пытаться пройти дальше, если тормозящий элемент был незначителен, то тест пройдёт, а если нет, то где-нибудь свалится.
#122280 Поделитесь опытом работы с данными для автотестов.
Отправлено автор: vitorg 30 сентября 2013 - 13:17 в Selenium - Functional Testing
А почему не хотите генерировать данные на лету? В таком случае заморочек с БД меньше, а покрытие больше. Единственным недостатком можно считать некоторое снижение воспроизводимости результатов.
#122005 Ожидание загрузки Ajax формы и элементов
Отправлено автор: vitorg 23 сентября 2013 - 08:15 в Selenium - Functional Testing
Вот здесь было примерно то, что вам нужно (но для Selenium 1.x): Selenium: ожидание завершения всех AJAX-запросов.
Второй ваш вариант правильный - возвращает количество активных AJAX-запросов.
Второй ваш вариант правильный - возвращает количество активных AJAX-запросов.
- Форум тестировщиков
- → Публикации vitorg
- Политика Конфиденциальности
- Правила форума ·