【发布时间】:2016-05-11 08:35:54
【问题描述】:
我很难在集成测试中与我的 google place 自动完成结果进行交互。
var placeSelector = '.pac-container .pac-item:first-child';
exports.runTest = function(test) {
casper.waitForSelector('input.street-address'); // wait for page to load
casper.sendKeys('input.street-address', 'fake address here', {keepFocus: true});
casper.waitUntilVisible(placeSelector);
casper.then(function() {
casper.click(placeSelector); // THIS DOES NOT DO ANYTHING
// if its possible to trigger the event in the context of the page, I
// could probably do so. However, I've scoured google's docs and cannot find the
// event that is fired when a place is clicked upon.
casper.evaluate(function() {
//google.maps.places.Autocomplete.event.trigger(???);
});
});
var formVal;
casper.then(function() {
formVal = casper.evaluate(function () {
return $('input.street-address').val();
});
});
};
使用前面的代码,没有结果,也没有填充输入,也没有隐藏建议的结果。
如何模拟用户在自动完成输入中输入地址并继续点击建议结果之一的操作?
我遇到的一些类似问题的资源:
How to "simulate" a click on a Google Maps Marker?
https://developers.google.com/maps/documentation/javascript/events?csw=1#EventsOverview
【问题讨论】:
-
能否提供完整的测试脚本?另外,您使用的是哪个版本的 PhantomJS?
-
@ArtjomB。我正在使用 casperjs 1.1.1 并且我相信 PhantomJS 2.1.7 。一个完整的测试脚本将只是一个带有谷歌自动完成功能的 html 页面,该页面使用选择器“input.street-address”进行了初始化
标签: javascript google-maps integration-testing google-places-api casperjs