Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google maps gstatic中的PhantomJS JavaScript错误,但不在浏览器中_Google Maps_Capybara_Phantomjs - Fatal编程技术网

Google maps gstatic中的PhantomJS JavaScript错误,但不在浏览器中

Google maps gstatic中的PhantomJS JavaScript错误,但不在浏览器中,google-maps,capybara,phantomjs,Google Maps,Capybara,Phantomjs,我最近通过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

我最近通过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

这是已知的水豚、幻影JS或谷歌地图API的bug吗?问题是否由PhantomJS中的用户代理字符串引起?

尝试将用户代理设置为

Mozilla/5.0(Windows NT 6.0)AppleWebKit/535.1(KHTML,如Gecko)Chrome/13.0.782.41 Safari/535.1

谷歌交付的JavaScript不能完全通过其默认用户代理运行。PhantomJS 1.x基于QtWebKit的一个非常古老的分支,与Chrome 13相当(用户代理字符串的原因)

您可以这样做:

@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' }

谷歌地图API实验版于今早(11月12日)更新,导致了此次破坏。默认情况下,包括:

它使用。将自己锁定到最新版本:


应该可以解决这个问题。

我正在使用Cucumber/Poltergeist,我在中通过创建以下扩展来解决这个问题:

/功能/支持/env.rb

Capybara::Poltergeist::Driver.new(应用程序、,
:extensions=>[“features/support/ignore\u gmaps\u errors.js”]
)
/features/support/ignore_gmaps_errors.js

window.onerror=函数(消息){
如果(消息==“TypeError:无法删除属性”。){
log(“忽略gmaps错误”);
返回false;
}否则{
返回true;
}
};

使用谷歌地图(v3.19)的最新实验版本,包括一个解决方案,为我修复了这个问题:


[编辑]谷歌地图第3.19版已经发布。此外,PhantomJS版本2于2015年1月23日发布,其中包含了一个没有出现
无法删除属性问题的问题。

我收到了与使用capybara webkit的OP相同的错误。我将用户代理设置为建议的,但仍然得到
类型错误:无法删除属性
错误。只有当我尝试使用地理编码器模块时,错误才会发生。这个错误在今天早上突然出现。好吧,这表明问题不在PhantomJS或capybara webkit中,而是在capybara本身。不同的司机有相同的问题吗?我只是用普通的PhantomJS再次尝试了一下,无论是否使用上面的用户代理字符串,都没有错误。您到底尝试了什么?我的代码是:是的,但是当我第一次编写脚本时,GM实际上使用了MapsAPI,现在不再使用了。至少不是公共版本。虽然这暂时有帮助,但更新现在(显然)已被推到发布版本,这些更改不再有帮助。因为这不再有效,我正在删除答案。我已经向google maps api人员提交了一个bug,我们将看到它的发展方向。不需要删除答案,但请编辑它,并在顶部添加一个注释,说明它不再有效。很容易漏掉评论。你能分享bug报告URL来跟踪吗?你可以在这里跟踪问题:我为RSpec尝试了这个解决方案,效果很好。谢谢。请注意,如果您有任何其他
“TypeError:Canable to delete property”
错误,这些错误将被默默忽略,但我无法使它更具体地针对google maps错误,这是我唯一能让它工作的方法。