文档章节

移动端Web开发调试之Weinre调试教程

 若沙
发布于 2016/08/30 17:02
字数 2513
阅读 9
收藏 0

Weinre(WebInspector Remote)是一款基于Web Inspector(Webkit)的远程调试工具,借助于网络,可以在PC上直接调试运行在移动设备上的远程页面,中文意思是远程Web检查器,有了Weinre,在PC上可以即时修改目标网页的HTML/CSS/Javascript,调试过程可实时显示移动设备上页面的预览效果,并同步显示设备页面的错误和警告信息,可以查看网络资源的信息,不过weinre不支持断点调试。该项目目前是 Apache Cordova 的一部分。

 

weinre工作原理

两张图读懂Weinre的工作机制:

 

上述三层结构示意图的含义:

Debug客户端(client):本地的WebInspector,远程调试客户端。

Debug服务端(agent):本地的HTTPServer,为Debug目标页面与Debug客户端建立通信。

Debug目标页面(target):被调试的页面,页面已嵌入weinre的远程js。

客户端、目标页面与Debug服务端之间使用XMLHttpRequest (XHR)进行HTTP通信,你通常的使用情形是将Debug客户端与服务端搭建在桌面开发环境,Debug目标页面放在移动设备。

由于Weinre的debug客户端是基于Web Inspector开发,而Web Inspector只兼容WebKit核心的浏览器,所以只能在Chrome/Safari浏览器打开Weinre客户端进行调试。

 

我在Chrome 38/39版本测试时打开Debug客户端出现页面白板,原因未知,了解原因的欢迎留言给我。换为Safari浏览器打开则正常。

 

Weinre系统支持性

iOS 3.1.3或更低版本不支持

webOS 1.45或更早版本不支持

 

Debug客户端支持的平台

weinre的Mac程序(自带客户端) - Mac OSX 10.6 64-bit

Google Chrome 8及以上版本浏览器

Apple Safari 5及以上版本浏览器

 

Debug目标页面支持的平台

Android 2.2+系统浏览器

Android 2.2+ 中的phonegap

iOS 4+ 的safari浏览器

BlackBerry v6.x 模拟器

webOS

chrome8+

safari5+

 

关于Weinre的Java版本下载地址无法访问的问题,借用skyhh同学的话,是由于weinre被PhoneGap收购,PhoneGap又被Adobe收购,Adobe收购PhoneGap后,把PhoneGap捐给了Apache,Apache把PhoneGap放在Cordova的项目中。Weinre也从最初的Java移植到了当前的JavaScript。在GitHub上搜索weinre的结果中前两个就是官方的Weinre项目。

 

先说第二个项目,是Apache后来推出的JavaScript版本weinre,需要在nodejs环境下安装使用,使用npm包管理工具也可以直接下载安装。

安装与服务启动命令如下:

 

[plain] view plain copy

  在CODE上查看代码片派生到我的代码片

  1. npm -g install weinre  //安装weinre  
  2.   
  3. weinre --boundHost [hostname | ip address |-all-]  --httpPort [port]  //启动weinre  

 

机器上有nodejs开发环境的同学到此即配置完毕,没有nodejs环境的继续往下看。

 

第一个项目pmuellr/weinre是Java版的,目前项目已经转移到 http://people.apache.org/~pmuellr/weinre/

进入后找到二进制jar包的非官方打包地址 http://people.apache.org/~pmuellr/weinre/builds/

进入后找到1.6.1版本下载解压得到weinre.jar即可使用。

直接贴出1.6.1版本的jar包下载地址:http://people.apache.org/~pmuellr/weinre/builds/1.x/1.6.1/

 

其余的项目有的是Grunt下的解决方案,感兴趣的可GitHub自行查看。

 

安装Java版本的weinre需要有Java开发环境。

首先安装JDK,并设置环境变量。

新建系统变量JAVA_HOME,设为安装目录D:\Program Files\Java\jdk1.6.0_43

 

 

新建/编辑系统变量classpath,设置为.;%JAVA_HOME%\lib;(注意前面的点与分号)

 

 

新建/编辑系统变量Path,设为;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin

 

 

然后打开命令提示符,输入java –version 如果出现版本号,则表示安装配置正确。

 

 

然后进入weinre的解压路径,在命令提示符窗口运行以下命令:

 

[plain] view plain copy

  在CODE上查看代码片派生到我的代码片

  1. java -jar weinre.jar --httpPort 8910--boundHost -all-  

 

 

然后在Safari浏览器地址栏输入http://localhost:8910/,若打开如下所示页面,则表明weinre服务启动成功。

说明:weinre默认使用8080端口,服务器主机名默认使用localhost,需要修改可在上述命令中进行设置,比如可以绑定为开发机器的内网IP地址。为了能在本地使用localhost打开,又能在移动设备或本地环境用IP地址打开Weinre调试工具,我们需要设置boundHost为"-all-",同时要确保调试页面所在设备与当前开发环境(包括Debug客户端和Debug服务端)都处于同一网段内。Weinre绑定端口一定不能与本地环境已监听的端口冲突,确保绑定的是闲置端口,例如我设置的是8910。

Weinre还提供了下面的启动参数:

--help : 显示Weinre的Help

--httpPort  [portNumber] : 设置Weinre使用的端口号, 默认是8080

--boundHost  [hostname| ip address | -all-] : 默认是'localhost', 这个参数是为了限制可以访问Weinre Server的设备, 设置为-all-或者指定ip, 那么任何设备都可以访问Weinre Server。

--verbose  [true | false] : 如果想看到更多的关于Weinre运行情况的输出, 那么可以设置这个选项为true, 默认为false;

--debug  [true | false] : 这个选项与--verbose类似, 会输出更多的信息。默认为false。

--readTimeout  [seconds] : Server发送信息到Target/Client的超时时间, 默认为5s。

--deathTimeout  [seconds] : 默认为3倍的readTimeout, 如果页面超过这个时间都没有任何响应, 那么就会断开连接。

更多参数可以访问http://people.apache.org/~pmuellr/weinre/docs/latest/Running.html

MAC OS X系统更为简便,无须命令行,直接运行app即可启动weinre,后续的步骤和windows相同。

Debug服务端所在的内网IP地址可以在命令提示符中输入ipconfig命令查看

 

 

然后我们使用服务端所在IP地址加端口访问:http://本地ip:Port

例如:http://192.8.104.20:8910/,如下图所示

 

TargetScript

将上图中Target Script部分的js地址加入到你要调试的目标页面内。例如:

<script src="http://192.8.104.20:8910/target/target-script-min.js#anonymous"></script>

 

然后在移动设备打开添加过这个脚本的网页,例如我的页面放在本地环境并使用端口8888监听,所以在移动端浏览器需要输入:

 

。并在桌面环境Safari浏览器打开Debug 客户端用户接口。如下图:

http://192.8.104.20:8888/newyear2015/crack.html

 

 

如果桌面电脑用USB数据线连接了移动设备,但Debug客户端依然显示为weinre:targetnot connected,如下图所示:

 

 

这时你可以尝试以下方法:

1.      检查是否通过USB数据线连接成功(安装驱动)。

2.      检查Debug客户端桌面环境是否和移动设备处于同一个局域网网段,尤其是WiFi方式上网的情况,一定要防止Wifi自动连接到其他网络中。

3.      尝试将Target Script 脚本放在html文件的尾部。

4.      检查Debug调试客户端用户接口的Client id是否与目标页面内target script 中的client id一致。

 

Target Bookmarklet

 

使用此方法可以将标签中的代码注入到目标页面代码中。以下是JavaScript代码段:

 

javascript:(function(e){e.setAttribute("src","http://192.8.104.20::8910/target/target-script-min.js#anonymous");document.getElementsByTagName("body")[0].appendChild(e);})(document.createElement("script"));void(0);

 

该代码段可以通过在手机端浏览器访问对应的url方式获取。例如这里是:

http://192.8.104.20:8910/target/target-script-min.js

然后保存为设备书签中。

以后如果需要调试页面,打开页面后,点击Debug书签就可以在桌面环境开始调试了。

 

PhoneGapWebApp调试

PhoneGap WebApp也就是运行在移动设备Webview之内(Android:webview,iOS:uiwebview)的移动应用,因此weinre调试只需要在要调试的目标页面中加入weinre脚本代码即可。

另外可以安装使用GapDebug应用,GapDebug是一款跨平台的移动设备调试工具,支持拖拽式一键安装,支持重启App后Debug状态恢复,支持断点调试,支持Windows和Mac OS系统,官方地址

https://www.genuitec.com/products/gapdebug/

 

多用户调试

Debug客户端用户接口#号后是一个调试客户端的id,用于在多用户调试时,识别各自不同的调试项目。

在同一局域网的网段内,大家可以共享weinre调试环境。有一台电脑作为Debug服务器,其他成员只需要一个自己的client id就可以在自己的电脑上开始真机调试了。使用方法同上,这里不再赘述。

 

Debug客户端中调试方法

 

如果调试设备连接成功,会显示如下状态:

 

 

 

Elements面板

 

可以修改html和CSS代码,无须刷新页面,即可在目标设备页面上实时预览效果。

 

Resources面板

 

包括Databases、Local Storage和Session Storage信息,若目标页面用到了缓存,则可以在此看到数据。

 

Network面板

 

由于weinre是基于XMLHttpRequest进行监听的,所以网络面板只显示通过XML HTTPRequest的请求加载的数据,也就是Ajax方式加载的资源。

 

Timeline面板

 

 

Console面板

 

 

 

第三方Weinre服务

 

技术团队可以按照上述步骤搭建一个本地的weinre调试环境,供团队内部使用。除了自建weinre服务器,也可以使用第三方提供的weinre服务。

 

目前国外的有PhoneGap提供的weinre远程服务,用户可以访问下述网址参看用户远程调试接口

http://debug.build.phonegap.com/

方法和上面自建weinre服务没什么区别,这里就不多说了。

 

其他调试工具

 

除了介绍过的Chrome 远程调试工具DevTools、weinre远程调试,目前的还有Adobe公司推出的跨平台调试工具Adobe Edge Inspect CC,以及国内网易前端工程师@听奏同学开发的iOS系统专用调试工具MIHTool,也是功能很强大的。这里不一一介绍了。

本文转载自:

粉丝 0
博文 42
码字总数 10695
作品 0
深圳
网页/平面设计
私信 提问
pc调试移动终端web代码(工具Weinre)

做移动web开发的同仁,多少都为各个浏览器困扰。基于手机浏览器的性能和各个开发商的私人考虑,我们现在在android、ios等系统还很难使用到完全统一的浏览器内核。无论是ucweb、chrome、safar...

嘻哈开发者
2014/02/11
254
0
五个你必须知道的javascript和web 调试技术

在前端开发中,调试技术是必不可少的技能,本文将介绍五种前端开发必备的调试技术。 Weinre移动调试 DOM 断点 debugger断点 native方法hook 远程映射本地调试 Weinre 在移动上面开发调试是很...

H_J
2013/12/17
1K
2
五个你必须知道的javascript和web 调试技术

Weinre 安装weinre 原理 Tips DOM断点 使用DOM断点 Tips javascript的debugger语句 使用javascript的断点 Tips 原生代码的hook调试 举个例子 Tips 远程映射本地调试 在前端开发中,调试技术是...

迷宫素描者
2013/12/18
166
0
移动端Web开发调试之Weinre调试教程

原文地址:http://blog.csdn.net/freshlover/article/details/42640253 在设计师与前端开发人员的努力下,一个WebApp出炉了,可是测试人员说了一堆的问题:某某机型下页面表现不一致,某某系统...

程序员诗人
2017/04/24
0
0
我想用手机测试自己写的web页面,该怎么做?

作者:不爱吃西红柿的鱼 链接:https://www.zhihu.com/question/37361845/answer/71674280 来源:知乎 一、IOS 移动端 (Safari开发者工具) 手机端:设置 → Safari → 高级 → Web 检查器 ...

hhj187
2016/10/16
133
0

没有更多内容

加载失败,请刷新页面

加载更多

无回路有向图的拓扑排序

因公司业务需要,在表单中每个字段都会配置自动计算,但自动计算公式中会引用到其他字段中的值。所以希望可以根据计算公式,优先计算引用的公式。所以最终使用了无回路有向图的扩扑排序来实现...

兜兜毛毛
今天
6
0
如何抢占云栖大会C位?史上最强强强攻略来了

点击观看视频: APSARA云栖大会开发者情怀 原文链接 本文为云栖社区原创内容,未经允许不得转载。

阿里云官方博客
今天
6
0
Kubernetes 从懵圈到熟练:集群服务的三个要点和一种实现

作者 | 声东 阿里云售后技术专家<br /> 文章来源:Docker,点击查看原文。 <br />以我的经验来讲,理解 Kubernetes 集群服务的概念,是比较不容易的一件事情。尤其是当我们基于似是而非的理解...

阿里巴巴云原生
今天
9
0
PHP7.3的新特性

2018年12月6日,PHP7.3正式版发布,在PHP7.2基础上进行了大量错误修复和安全优化,性能提升10%! 从目前的更新说明来看,PHP 7.3 并不是一个主打新特性的版本,包含更多的是 bug 修复。PHP 7...

迅睿CMS-PHP开源CMS程序
今天
8
0
Tomcat 应用中并行流带来的类加载问题

本文首发于 vivo互联网技术 微信公众号 链接:https://mp.weixin.qq.com/s/f-X3n9cvDyU5f5NYH6mhxQ 作者:肖铭轩、王道环 随着 Java8 的不断流行,越来越多的开发人员使用并行流(parallel)...

vivo互联网技术
今天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部