Watir и Javascript - PullRequest
       13

Watir и Javascript

3 голосов
/ 06 апреля 2011

Я изучаю несколько инструментов веб-тестирования. Я пытаюсь watir сейчас. Моя главная проблема связана с Javascript. Я просто хочу знать, может ли кто-нибудь дать мне обзор работы с javascript в watir. Каковы некоторые подводные камни и трудности с этим? Используются ли в основном javascript-инъекции, чтобы сообщить странице, что делать?

И если кто-то хочет предложить другие инструменты веб-тестирования, такие как watir, я был бы признателен. Сначала я попробовал селен и нашел его ненадежным.

Есть ли на рынке дешевые инструменты?

Спасибо!

Ответы [ 4 ]

4 голосов
/ 06 апреля 2011

Watir + Javascript => Как правило, в ваши тесты можно добавить javascript, например,

@b.goto ( "JavaScript: openWin (2)")

Когда вы говорите «иметь дело с JavaScript», я предполагаю, что вы имеете в виду, насколько хорошо Watir обрабатывает код на стороне клиента с точки зрения рендеринга / исполнения. Поскольку Watir работает с реальными браузерами (такими как Selenium), JS будет выполнять , как правило, , как и ожидалось.

Watir имеет много разных драйверов, например watir, firewatir, safariwatir, chromewatir, operawatir и теперь watir-webdriver. Все они управляют браузером в несколько разных реализациях в зависимости от браузера и ОС. Например, Firewatir использует JSSH, который фактически управляет браузером через JS. Можете ли вы объяснить, что вы подразумеваете под «ненадежностью» Selenium?

Я бы порекомендовал взглянуть на последнюю реализацию watir-webdriver. Таким образом, вы получаете преимущество прекрасного watir API поверх новой реализации драйвера. Webdriver имеет серьезную поддержку в плане поддержки (Selenium 2 использует его, Google его кодирует!), Поэтому я считаю, что это безопасная ставка. Вы также можете контролировать большинство основных браузеров с этой реализацией.

Альтернативные инструменты => http://wiki.openqa.org/display/WTR/Alternative+Tools+For+Web+Testing

3 голосов
/ 06 апреля 2011

Тим дает довольно хороший ответ.

Единственное, что я должен добавить к тому, что он сказал, - это то, что я обнаружил, что время от времени мне приходится использовать методы watir для запуска определенных событий javascript, таких как onmouseover, для точной симуляции взаимодействия пользователя со страницей. , Поскольку у watir есть метод для этого, сложная часть - это не код watir, а обратный инжиниринг страницы (или отслеживание тонких взаимодействий страниц на основе действий пользователя), чтобы выяснить, какие элементы «связаны» с какими событиями и порядок запустить эти события против этих конкретных элементов.

Обычно довольно просто посмотреть на HTML для элемента и посмотреть, что происходит. Но с некоторыми пользовательскими элементами управления это может потребовать некоторого обучения, потому что им удается довольно хорошо «скрыть» всю проводку событий, и вам, возможно, придется анализировать различные аспекты страницы (стили и все), используя что-то вроде скрипач.

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

1 голос
/ 07 апреля 2011

Если ваш JS не запускает обновление HTML, тогда WATiR запутается.Когда вы щелкаете объект в WATiR, он ожидает загрузки страницы, прежде чем продолжить.Вы можете преодолеть это с помощью пользовательских команд ожидания и использования «.click!».

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

Возможно, вы захотите заглянуть в Firewatir, sahi, watir-webdriver, просто чтобы дать вам больше подсказок (предложит поискать для «веб-тестирование с открытым исходным кодом »и тому подобное, если вы этого не сделали. Я изучил эти и многие другие и остановился на WATiR по соображениям стоимости, мощности, гибкости и предварительных знаний (в ruby ​​и WATiR). С правильными жемчужинами он будет говоритьв большинство баз данных и в Excel (или другой файл) для загрузки тестовых данных.

В настоящее время я использую WATiR для тестирования сгенерированного ZK интерфейса, в котором ни один из идентификаторов не является статическим, и в нем много AJAXiness.Я только что построил фреймворк для решения этих проблем, и он прекрасно работает.

Кроме того, некоторые полуправденные и истинные вещи, которые могут помочь .

0 голосов
/ 14 ноября 2013

Для передачи javascript из watir используйте browser.execute_script () Пример:

Watir::Wait.until { $browser.execute_script("return document.readyState") == "complete" }
...