Я пытаюсь протестировать приложение карт Google с помощью Rails3. Я использую огурец с капибарой и селеном для тестирования JavaScript. У меня есть карта, на которой я жду загрузки карт Google, а затем отправляю запрос ajax на свой сервер, где я получаю местоположения, которые я вставляю на карту. Мне интересно, можно ли с селеном дождаться загрузки карт Google, завершения вызова ajax на моем сервере и размещения маркера внутри карты. Другая проблема - как выбрать этот маркер на картах Google. Есть ли какие-нибудь селекторы?
Или мне следует пойти другим путем и использовать среду тестирования JS, такую как Jasmine, чтобы проверить, загружены ли мои классы и так далее. У меня нет опыта работы с Jasmine, так можно ли протестировать карты Google?
Может быть, кто-то знает решение, или подсказку, если это невозможно, или обходной путь, или ...;)
[ОБНОВЛЕНИЕ 1]
Я узнал, как выбирать маркеры на картах Google. Если вы посмотрите тесты на селен в Google , вы сможете узнать, что они делают. Например, выбор маркера:
waitForElementPresent xpath=//img[contains(@src,'marker')]
Но здесь возникает следующая проблема. Как выбрать конкретный маркер? Есть ли способ внутри javascript google maps API присвоить ему идентификатор, чтобы я мог использовать # marker_1
, # marker_2
...?
И еще одна странная вещь То есть такая функция, как wait_for_element
или wait_for_condition
, недоступна в моих определениях шагов для огурца. Используются ли тесты google selenium с такой собственной функцией, как эта waitForElementPresent
? Или это стандартные селеновые функции? Я нашел много сообщений, где они всегда используют что-то вроде
selenium.wait_for_condition
selenium.wait_for_element
or
@selenium.wait_for_condition
...
В моих определениях шагов selenium
и @selenium
var a nil. Как я могу получить доступ к этим методам? Я также нашел этот пост , но он от октября '08, так что я думаю, что должно быть лучшее решение (кстати, это решение работает на первый взгляд).
Как это страница , они дают обзор нескольких методов селена, как ждать условия или элемента. Это все еще присутствует? Как я могу использовать эту функцию?
Как и на этой странице , они дают обзор нескольких методов селена, как ждать условия или элемента. Это все еще присутствует? Как я могу использовать эти функции?
Как и на этой странице , они дают обзор нескольких методов селена, как ждать условия или элемента. Это все еще присутствует? Как я могу использовать эти функции?
[ОБНОВЛЕНИЕ 2]
Черт возьми, я обнаружил, что тесты на селен, о которых я упоминал выше, предназначены для V2 карт Google, а не для V3. Я пробовал с
wait_until { page.has_xpath?("//img[contains(@src,'marker')]") }
, но не работает. Маркер виден на карте, но я получаю ошибку тайм-аута, потому что с этим селектором XPath он не найден. Мне интересно, можно ли вообще выбрать маркер из DOM.
Я также пытался назначить дополнительный атрибут для маркера при его создании:
// marker is the marker returned by google maps after adding it to the map
$(marker).attr('id', "marker_1");
Но когда я пытаюсь получить к нему доступ с помощью jQuery селектор $ ("# marker_1")
, не находит. Итак, решения пока нет.