我最近通过我们的PhantomJS测试套件运行了我们的网站,并遇到了JavaScript错误,我无法在我的浏览器中手动重现。这些错误可在Google maps api中找到,Capybara返回的文字如下:
TypeError: Unable to delete property.
TypeError: Unable to delete property.
at :215
at https://maps.gstatic.com/maps-api-v3/api/js/19/3/main.js:20 in cf
at https://maps.gstatic.com/maps-api-v3/api/js/19/3/main.js:20 in cf
at https://maps.gstatic.com/maps-api-v3/api/js/19/3/main.js:19
at :214
at https://maps.gstatic.com/maps-api-v3/api/js/19/3/main.js:20 in cf
at https://maps.gstatic.com/maps-api-v3/api/js/19/3/main.js:20 in cf
at https://maps.gstatic.com/maps-api-v3/api/js/19/3/main.js:21
at :176
at :31
at https://maps.gstatic.com/maps-api-v3/api/js/19/3/main.js:26 in Yf
at :178
这是Capybara,PhantomJS或Google maps API的已知错误吗?问题可能是由PhantomJS中的用户代理字符串引起的吗?
答案 0 :(得分:4)
我正在使用Cucumber / Poltergeist,我通过创建以下扩展程序来解决这个问题:
/features/support/env.rb
Capybara::Poltergeist::Driver.new(app,
:extensions => ["features/support/ignore_gmaps_errors.js"]
)
/features/support/ignore_gmaps_errors.js
window.onerror = function(message) {
if (message == 'TypeError: Unable to delete property.') {
console.log('Ignoring gmaps error');
return false;
} else {
return true;
}
};
答案 1 :(得分:3)
谷歌地图API实验版今早(12/11)更新,导致此次破损。默认情况下,包括:
<script src="//maps.googleapis.com/maps/api/js?libraries=places"></script>
它使用latest experimental version。将自己锁定到最新版本:
<script src="//maps.googleapis.com/maps/api/js?v=3&libraries=places"></script>
应该解决这个问题。
答案 2 :(得分:1)
使用包含解决方法的最新实验版Google地图(v3.19),为我解决了这个问题:https://code.google.com/p/gmaps-api-issues/issues/detail?id=7475#c20
[编辑] Google地图v3.19版本为released as the production version on 17 Feb 2015。此外,PhantomJS第2版于2015年1月23日发布,其中包含updated WebKit module并未显示Unable to delete property
问题。
答案 3 :(得分:0)
尝试将用户代理设置为
Mozilla / 5.0(Windows NT 6.0)AppleWebKit / 535.1(KHTML,与Gecko一样)Chrome / 13.0.782.41 Safari / 535.1
Google提供的JavaScript使用默认用户代理无法完全运行。 PhantomJS 1.x基于一个非常古老的QtWebKit分支,可与Chrome 13(用户代理字符串的原因)相媲美。
looks like你可以这样做:
@session = Capybara::Session.new(:poltergeist)
@session.driver.headers = { 'User-Agent' => 'Mozilla/5.0 (Windows NT 6.0) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.41 Safari/535.1' }