使用selenium 检测js报错
背景:接到一个需求,想检测页面是否能检测js报错,何为js报错,如下图所示,在控制台中,使用console,如果有js报错,就会出现错误
如何检测,简单版操作,打开一个url,使用manage获取浏览器的日志,这样会打印出这个页面获取的内容
@Test
public void test2(){
op.loopGet("https://www.rosewholesale.com/cheapest/chic-embossing-braid-5-pieces-3027854.html", 50, 3, 60); //这个就是打开页面的方法,只是自己进行了封装
LogEntries logEntries = driver.manage().logs().get(LogType.BROWSER);
for (LogEntry entry : logEntries) {
Log.logInfo(" "+entry.getLevel()+ " "+entry.getMessage()); }
在日志中会打印出内容包含sever和waring,server就是js报错
自己理解的原理:实际使用的driver中日志信息,然后进行过滤,可以在源码中看到LogType.BROWSER不止这一种,还有获取客户端,等其他,如下图 你会发现其实在启动driver,每次都会记录他的日志,我们原理实际也就是利用他的日志,对我们需要的数据进行筛选
但是真实场景,往往不可能是对一个url进行检测,需要打开很多url进行检测,查看某个url中包含哪些js有问题,这里就会有一个坑,因为driver每次会一直记录页面的错误,所以当打开网页后,输入多个url,进行筛选时,会重复把以前的数据在进行过滤,那每次拿到对应的url的日志,目前自己想到的2种解决办法:
1.每次都实例driver,让他做为一个新对象,我们拿到的数据也是某个url对应的日志,但是这样耗时太长,性能差
2.纠结了很久,换了个思路,拿到一个url的日志对象,取出内容,在get其他新url时,判断日志是否有值,有值进行删除,这样每次打开url都会拿到最新的url
/**
*
* @测试点: 检查 js是否有报错
* @验证点: 如果传入的url中有报错,返回报错信息
@param urllist 传入的url
@param timeout 页面超时时间
@param loopTimes 重试次数
@param timeoutDefault 默认加载页面的时间
@return 报错的url和报错的信息
* @备注: HashMap<String,List<String>>
* @author zhangjun
* @date 2018年5月24日
@修改说明
*/
public HashMap<String, List<String>> checkJsSEVERE(List<String> urllist, int timeout, int loopTimes, int timeoutDefault){
List<String> levelList;
HashMap<String, List<String>> severeLevel = new HashMap<String, List<String>>();
LogEntries logEntries = driver.manage().logs().get(LogType.BROWSER);
for (int i = 0; i < urllist.size(); i++) {
try {
if (logEntries.getAll().isEmpty() == false) { //判断是否有内容
logEntries.iterator().remove(); //有内容进行删除
}
} catch (Exception e) {
}
String get_url = urllist.get(i); //在重新进行删除
loopGet(get_url, timeout, loopTimes, timeoutDefault);
levelList = new ArrayList<String>();
logEntries = driver.manage().logs().get(LogType.BROWSER);
for (LogEntry entry : logEntries) {
Object level = entry.getLevel();
String getLevel = String.valueOf(level);
if (getLevel.equals("SEVERE")) {
levelList.add(entry.getMessage());
}
}
severeLevel.put(get_url, levelList);
}
return severeLevel;
}
使用selenium 检测js报错的更多相关文章
- selenium执行js报错
selenium执行js报错 Traceback (most recent call last): dr.execute_script(js) File "C:\Python27\l ...
- IE8.0.6001这个版本执行JS报错
现场: OS winserver 2008 IE8.0.6001.18702 JS报错,不能登陆 OS XP IE8.0.6001.18702CO JS报错,不能登陆 公司测试: ...
- Vue.js报错Failed to resolve filter问题原因
Vue.js报错Failed to resolve filter问题原因 金刚 vue Vue.js js javascript 之前使用vue.js写分页功能时,写了一个过滤器,发现一个比较奇怪的错 ...
- 解决MyEclipse中的js报错的小方法
今天,下了个模版,但是导进去的时候发现js会报错.看了下其他都没有错误.而有一个js报错误,请原谅我有点红色强迫症,不能留一点红色 . 错误如下:Syntax error on token " ...
- Selenium Grid 运行报错 Exception thrown in Navigator.Start first time ->Error forwarding the new session Empty pool of VM for setup Capabilities
Selenium Grid 运行报错 : Exception thrown in Navigator.Start first time ->Error forwarding the new se ...
- MyEclipse的JQuery.min.js报错红叉解决办法
MyEclipse的JQuery.min.js报错红叉解决办法 1.选中报错的jquery文件"jquery-1.2.6.min.js".2.右键选择 MyEclipse--> ...
- 【前端】诸葛io收集前端js报错信息
转载请注明出处:http://www.cnblogs.com/shamoyuu/p/zhuge_error.html 一.什么是诸葛io 诸葛io就是通过分析用户的操作事件对用户数据,行为路径等进行分 ...
- MyEclipse忽略js报错
MyEclipse对官网下载的js报错,解决办法如下: 1. 对js文件右键选择 MyEclipse --> Exclude From Validation 2. 然后继续右键执行MyEclip ...
- Eclipse和MyEclipse使用技巧--解决MyEclipse中的js报错的小方法
今天,下了个模版,但是导进去的时候发现js会报错.看了下其他都没有错误.而有一个js报错误,请原谅我有点红色强迫症,不能留一点红色 . 错误如下:Syntax error on token " ...
随机推荐
- kafka的offset和ProcessingGuarantee
https://blog.csdn.net/xianpanjia4616/article/details/84347087 https://m.2cto.com/net/201703/616024.h ...
- thinkphp自动验证和自动完成
tp验证码的自动验证小案例 模板文件 <form action="" method="post"> <p> User: <inpu ...
- vue.js请求数据(axios)
使用npm安装axios npm install axios --save 在main.js中引入axios import axios from "axios"; 注册axios到 ...
- Cmder光标错位的问题&VSCode终端光标错位问题
问题 本机中安装了 Cmder,几乎是0配置 ,同时在 VSCode 中设置默认终端为 Cmder,在 VSCode 中打开终端,显示如图: 这里光标实际的位置是 . 的后面,但是表现出来的是多一个空 ...
- Windows下VsCode的简单配置
1. 安装插件 2. 配置终端软件 安装cmder 添加cmder 按下ctrl+shift+p键,输入setting,打开user settings如图: 将 "terminal.int ...
- Nginx 为什么要延迟关闭
防止 Nginx处理完后调用close关闭连接后 ,若缓冲区任然接收到客户端发来的内容 ,则服务器会向客户端发送RST包关闭连接,导致客户端由于收到了RST而忽略了 http response ...
- CAD安装失败怎样卸载CAD 2014?错误提示某些产品无法安装
AUTODESK系列软件着实令人头疼,安装失败之后不能完全卸载!!!(比如maya,cad,3dsmax等).有时手动删除注册表重装之后还是会出现各种问题,每个版本的C++Runtime和.NET f ...
- 性能测试工具Jmeter05-badboy检查点与参数化
检查点设置 选择要检查的文字,然后在Tools->Add Assertion for Selection里添加断言,在进行回放 参数化 在请求搜索关机键字的部分进行参数化 选中搜索关键字- ...
- [转]Passing data between pages in JQuery Mobile mobile.changePage
本文转自:http://ramkulkarni.com/blog/passing-data-between-pages-in-jquery-mobile/ I am working on a JQue ...
- (转)IBM AIX系统硬件信息查看命令(shell脚本)
IBM AIX系统硬件信息查看命令(shell脚本) 原文:http://blog.itpub.net/22085031/viewspace-1054015/ 查看IBM AIX系统的主机型号.序列号 ...