Очень надеюсь, что среди Вас найдутся практикующие сочетание вышеописанных тулов.
Проблема собственно в том, что мне с трудом удалось настроить работу Capybara+Rspec, но после этого все Webdriver методы стали для меня недоступны, то есть если я пытаюсь использовать какойто метод по отношению к элементу, то возникает ошибка что undefined method '***' for #<Capybara::Element....>, что очевидно, а очень хочеться заюзать кое что из вебдрайверовского набора методов, я ведь подключил Capybara, для расширения моих возможностей, а никак не для намеренного ограничения себя же в возможностях.
Подскажите кто сталкивался с подобными трудностями
Ау-у-у-у. Есть тут кто-нибудь, автоматизирующий на Руби+Вэбдрайвер+Рспек (/Кукумбер)+Капибара?
Если есть, отзовитесь
Думаю, мы могли бы помогать друг другу...Ну хотя бы время от времени:)
Ну и не только друг другу... мало ли, может кто-нибудь еще возжелает воспользоваться этими тулами... А тут - мы. В общем пишите, если захотите объединиться
Да, у нас и Руби-шников не так много по сравнению с западом. Очень редко слышу о том, что куда-то требуются люди со знанием такого языка и технологий. Хотя, знаю, что один такой проект есть. Но, там не веб-UI тестирование.
просто как-то получилось что выбор пал именно на Руби. Но я об этом было дело жалел только тогда, когда не мог живого человека найти вопросы позадавать (среди соотечественников), поэтому пришлось по иностранным ресурсам копаться. А вообщем тулы очень даже интересные, я за пару месяцев уже привык, ничего другого не хочется:) По крайней мере пока...
Что-то мне это WebRat напоминает (если это не он). Как уже ранее упоминали, веб-драйвер доступен через
page.driver.browser
Но на этом останавливаться не стоит, так как не очень хорошо, когда в тестах присутствует вызов методов сразу нескольких движков. Мы на подобном проекте сделали общий класс, который по сути наследовал функционал WebRat, но если вдруг чесались руки вызвать методы селениума/веб-драйвера напрямую, то для таких целей был волшебный метод
method_missing?
Это встроенный обработчик, который срабатывает, когда мы вызываем метод, которого в данном классе нет. В этом методе мы делали динамический вызов метода селениума (см. метод call). Соответственно, так мы объединили 2 движка под одним интерфейсом и можно было встретить что-то типа:
driver.fill_in'Name',:with=>'Jimmy'
driver.type'Name','Jimmy'
Но если честно, то лучше так не делать. С такими движками нужно действовать, как с выпивкой, - можно вовсю потреблять любой из них, но не смешивать бездумно, иначе ничем, кроме головняка, это не закончится.