AT.info ПОСИДЕЛКИ  vKontakte   facebook группа  
AJAX

как выполнить Ajax + webdriver ?

Есть такая кнопка она появлятся при наведении курсора мыши на область с сообщением и пропадает когда убераем.

<a class="uiSelectorButton    " ajaxify="/ajax/feed/feed_menu.php?

Пробовал просто черес css он говорит что отрабатывает а элемент не отрабатывается так как его не на странице. Должен выпадать список при нажатии... 

Как можно это реализовать?

Автоматизация Ajax с помощью Selenium, BDD и Page Object

Одна сложность, с  которой сталкиваются тестеры, когда они начинают управлять браузерами с помощью Cucumber, - как управлять сайтами, которые содержат множество Ajax вызовов.

Они пишут скрипты, которые предполагают, что элементы на странице существуют, и очень удивлены, когда тесты не проходят, потому что они пытаются получить доступ к тому, чего еще не было на странице.

В этой статье я напишу простой сценарий, который демонстрирует асинхронные действия обработки Page Object gem. Я также кратко ознакомлю Вас с новым Gem, который я использую для создания моих новых проектов. Я сделаю все это написанием  сценария, который использует один из примеров, который Google предоставила для демонстрации GWT библиотеки. Для тех из вас, которые посетили один из моих уроков, вы уже знакомы с этим примером, но, возможно есть еще несколько новых вещей для вас для изучения. Давайте начнем писать код!

Создание проекта

Первое, что мне нужно сделать, - это создать структуру моего  проекта. Я думаю, я буду использовать Page Object gem с  Selenium. Давайте использовать testgen gem для запуска. Если у вас нет установленного  gem, вы можете просто выполнить gem install testgen. Вот команда, которую я использовал для создания своего проекта:

testgen project ajax_example --pageobject-driver=selenium

Это создает всю структуру проекта. Давайте быстро проверим, все ли в порядке. Первое, что нужно сделать, это убедиться, что все gem установлены. Testgen создал Gemfile файл для нас, теперь все, что нужно нам сделать, - это изменить на вновь созданные ajax_example каталог и выполнить bundle install.

Теперь, когда мы уверены, что у нас все gem установлены,  пришло время для запуска Сucumber. Testgen создал Rakefile для нас, чтобы сделать это легко. Просто введите rake команду в ajax_example каталоге. Вы должны увидеть следующее:

Using the default profile...

0 scenarios

0 steps

0m0.000s

Теперь мы готовы к написанию сценария.

Написание сценария

Мы будем использовать пример DynaTable с сайта GWT. Вот эта страница. На этой странице выберите checkbox «день», а затем классы, предлагаемые на этот день, отображаются в строке с именем  профессора. Давайте попробуем написать сценарий.

Я начинаю с создания файла в каталоге функций. Вот содержание:

Feature: Displaying class schedules

I need to be able to display the class schedule for professors.  When I
select a day the page should display all of the class taught by professors
on that day as well as the time for the classes.

  Scenario: Displaying classes offered by professors
    Given I am on the google dynamic table page
    When I view the schedule for "Monday"
    Then I should see that "Inman Mendez" offers a class at "Mon 9:45-10:35"
    When I view the schedule for "Tuesday"
    Then I should see that "Inman Mendez" offers a class at "Tues 2:15-3:05"
    And I should see that "Teddy Gibbs" offers a class at "Tues 10:00-10:50"

Заметьте, что я ничего не сказал о нажатии кнопок или checkboxes. Также заметьте, что я никоим образом не указал, как находятся или отображаются на странице класс или имя инструктора. Как вы думаете, почему я это сделал? В будущих статьях у меня  будет намного больше, что рассказать об этом.

Мой следующий шаг заключается в создании шага определений. Для этого я снова выполню команду ‘rake’. Cucumber достаточно хорош для создания шагов ожидания.

Given /^I am on the google dynamic table page$/ do
  pending # express the regexp above with the code you wish you had
end

When /^I view the schedule for "([^\"]*)"$/ do |arg1|
  pending # express the regexp above with the code you wish you had
end

Then /^I should see that "([^\"]*)" offers a class at "([^\"]*)"$/ do |arg1, arg2|
  pending # express the regexp above with the code you wish you had
end

Я знаю, что  собираюсь создать объект страницы, но в первую очередь я хочу подумать о том, как этот объект будет выглядеть. Я думаю, что я напишу код, который я бы хотел иметь через пару определений. Вот то, что я получил:

When /^I view the schedule for "([^\"]*)"$/ do |day|
  page.select_schedule_for day
end

Then /^I should see that "([^\"]*)" offers a class at "([^\"]*)"$/ do |name, expected|
  page.schedule_for(name).include? expected
end

Да. Я думаю, что именно так я хочу взаимодействовать со страницей объекта. Эти шаги определений незавершенные. Я только что написал достаточно, чтобы понять, что мне нужно добавить на страницу объект, который  я собираюсь писать. Теперь, давайте писать.

Удаленная работа Selenium + Groovy

Нужны бойцы для выполения проекта по автоматизации.

Детали:

  • RIA приложение
  • написано на grails
  • много AJAX, js, динамические объекты
  • flash
  • google maps с объектами на карте
  • вообще автоматизация не тривиальная и интересная
Нужно:
  • знание и опты автоматизации на Selenium
  • знание Java или Groovy

RoutineBot

Поставщик: 
AKS-Labs
Распространение: 
Платный
Цена: 
$495

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

Ключевые преимущества:

  • Позволяет автоматизировать визуальное тестирование двумя методами - разрабатывая скрипты как вручную, так и посредством записи.  
  • Поддерживает Pascal, JavaScript и Basic языки программирования.
  • Может автоматизировать большое количество событий - события мышки(нажатие, передвижение), клавиатуры(ввод текста), делать скриншоты, загружать и сохранять данные, скачивать файлы, работать с приложениями и окнами.
  • Поддериживает широкое количество функций для логирования событий(генерация html лога с предоставление скриншотов)

Поддерживаемые технологии: 
Windows Forms, Flex, SilverLight, HTML, Ajax, Pascal, JavaScript и Basic
Поддерживаемые ОС: 
Windows
Язык тестов: 
Pascal
Язык тестов: 
JavaScript
Язык тестов: 
Basic
Тестируемые приложения: 
Windows Forms, Flex, SilverLight, HTML, Ajax

Selenium 2.0: будущее тестирования веб-приложений (Алексей Баранцев)

2 октября на конференции DevPoint (Новосибирск) Алексей Баранцев выступил с докладом «Selenium 2.0: будущее тестирования веб-приложений».

В конце 2010 года ожидается выход новой версии популярного инструмента автоматизации тестирования веб-приложений Selenium 2.0. Новая версия обещает улученную поддержку современных AJAX-приложений, увеличение скорости выполнения тестов, преодоление имеющихся в Selenium 1.0 ограничений, таких как невозможность работы с “нативными” диалогами. Однако я собираюсь рассказать не только и не столько про эту новую версию (хотя без этого, конечно, не обойтись), но и вообще про всю ту инфраструктуру, которая сложилась вокруг этого замечательного фреймворка и продложает активно развиваться.

Говоря про “дваноль” я имею в виду совершенно уникальный для инструментов тестирования феномен – перерастание отдельного фреймворка в целое созвездие взаимно поддерживающих друг друга инструментов, появление множества маленьких и средних компаний, предоставляющих платные и бесплатные сервисы с использованием этих инструментов. Модульная расширяемая архитектура Selenium позволяет говорить о нём не как о фреймворке, а как о модульной платформе, на базе которой или из частей которой строятся другие инструменты.

Да, а что там про будущее тестирования веб-приложений? Мне кажется, что именно тот путь развития, по которому движется Selenium, является наиболее перспективным, потому что он обеспечивает отличную питательную среду для развития как самого фреймворка, так и сопутствующих инструментов. Залог выживания – в сотрудничестве!

Алексей Баранцев

Смотреть видео:

RSS-материал