Я пытаюсь протестировать приложение Google Maps с Rails3.Я использую огурец с капибарой и селеном для тестирования JavaScript.У меня есть карта, на которой я жду загрузки карт Google, а затем отправляю запрос ajax на мой сервер, где я получаю местоположения, которые вставляю в карту.Мне интересно, можно ли с помощью селена подождать, пока не загрузятся карты Google, вызов ajax на мой сервер завершен, и маркер размещен внутри карты.Другой вопрос, как выбрать этот маркер в Google Maps.Есть ли селекторы?
Или я должен пойти другим путем и использовать среду тестирования JS, такую как Jasmine, чтобы проверить, загружены ли мои классы и так далее.У меня нет опыта работы с Жасмин, так можно ли проверить карты Google?
Может быть, кто-то знает решение, или подсказку, если это невозможно, или обходной путь или ...;)
[ОБНОВЛЕНИЕ 1]
Я узнал, как выбирать маркеры на картах Google.Если вы посмотрите на тесты селена googles , вы можете проверить, что они делают.Например, выбор маркера:
waitForElementPresent xpath=//img[contains(@src,'marker')]
Но тут возникает следующая проблема.Как выбрать определенный маркер?Есть ли способ в javascript google maps API назначить ему идентификатор, чтобы я мог использовать #marker_1
, #marker_2
...?
И еще одна странная вещь - эта функциякак wait_for_element
или wait_for_condition
недоступны в моих определениях шагов огурца.Используются ли в Google тесты селена собственной функцией, подобной этой waitForElementPresent
?Или это стандартные функции селена?Я нашел много постов, где они всегда используют что-то вроде
selenium.wait_for_condition
selenium.wait_for_element
or
@selenium.wait_for_condition
...
В моих определениях шагов selenium
и @selenium
var nil.Как я могу получить доступ к этим методам?Я также нашел этот пост , но это с октября 2008 года, поэтому я думаю, что должно быть лучшее решение (кстати, это решение работает на первый взгляд).
Как и на этой странице , они дают обзор нескольких методов селена, как ожидать условие или элемент.Это все еще присутствует?Как я могу использовать эти функции?
[ОБНОВЛЕНИЕ 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")
, он не находит его.Итак, решения пока нет.