背景:接到一个需求,想检测页面是否能检测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报错的更多相关文章

  1. selenium执行js报错

    selenium执行js报错 Traceback (most recent call last):    dr.execute_script(js)  File "C:\Python27\l ...

  2. IE8.0.6001这个版本执行JS报错

    现场: OS  winserver 2008 IE8.0.6001.18702   JS报错,不能登陆 OS  XP   IE8.0.6001.18702CO     JS报错,不能登陆 公司测试: ...

  3. Vue.js报错Failed to resolve filter问题原因

    Vue.js报错Failed to resolve filter问题原因 金刚 vue Vue.js js javascript 之前使用vue.js写分页功能时,写了一个过滤器,发现一个比较奇怪的错 ...

  4. 解决MyEclipse中的js报错的小方法

    今天,下了个模版,但是导进去的时候发现js会报错.看了下其他都没有错误.而有一个js报错误,请原谅我有点红色强迫症,不能留一点红色 . 错误如下:Syntax error on token " ...

  5. 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 ...

  6. MyEclipse的JQuery.min.js报错红叉解决办法

    MyEclipse的JQuery.min.js报错红叉解决办法 1.选中报错的jquery文件"jquery-1.2.6.min.js".2.右键选择 MyEclipse--> ...

  7. 【前端】诸葛io收集前端js报错信息

    转载请注明出处:http://www.cnblogs.com/shamoyuu/p/zhuge_error.html 一.什么是诸葛io 诸葛io就是通过分析用户的操作事件对用户数据,行为路径等进行分 ...

  8. MyEclipse忽略js报错

    MyEclipse对官网下载的js报错,解决办法如下: 1. 对js文件右键选择 MyEclipse --> Exclude From Validation 2. 然后继续右键执行MyEclip ...

  9. Eclipse和MyEclipse使用技巧--解决MyEclipse中的js报错的小方法

    今天,下了个模版,但是导进去的时候发现js会报错.看了下其他都没有错误.而有一个js报错误,请原谅我有点红色强迫症,不能留一点红色 . 错误如下:Syntax error on token " ...

随机推荐

  1. find命令使用

    find命令 find [PATH] [option] [action] 参数: 1.与时间相关参数 -atime -ctime -mtime 以mtime为例: -mtime n:n为数字,意义为在 ...

  2. Zabbix sql注入漏洞脚本执行反弹shell

    exp检测是否存在SQL注入漏洞root@ubuntu:~# python zabbix.py http://ip:9090/+------------------------------------ ...

  3. 使用codesmith无法连接mysql问题

    最近研究codesmith的用法,遇到了如题的问题,记录一下解决的方法. 1.问题描述: 在codesmith中选择MySQLSchemaProvider并连接数据库时,会报以下错误: Test fa ...

  4. 性能测试工具LoadRunner12-LR之Virtual User Generator 脚本编写验证步骤以及LR常见错误处理方法

    验证脚本比较好的流程: Generate:录制或开发脚本 SUSI(Single User Single Iteration,单用户单循环):运行录制生成的脚本,解决可能存在的关键问题 SUMI(Si ...

  5. [转]让你的网页文本框增加光晕效果与提示,水印(类似QQ2011)

    本文转自:http://www.cnblogs.com/xiaofengfeng/archive/2013/01/28/2880344.html 让你的网页文本框增加光晕效果(类似QQ2011) 我们 ...

  6. C++计算二叉树的节点数和高度

    用struct结构体的写法: /* * description: 计算二叉树的层数和节点数 * writeby: nick * date: 2012-10-23 16:16 * */ #include ...

  7. LeetCode 122.买卖股票的最佳时机(C++)

    给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格. 设计一个算法来计算你所能获取的最大利润.你可以尽可能地完成更多的交易(多次买卖一支股票). 注意:你不能同时参与多笔交易(你必须在再次 ...

  8. Linux证书登录,禁用密码

    如果验证成功的话就可以关闭密码登陆方式了, 编辑/etc/ssh/sshd_config, 将PasswordAuthentication改为no, ChallengeResponseAuthenti ...

  9. HDU 5446——Unknown Treasure——————【CRT+lucas+exgcd+快速乘+递推求逆元】

    Each test case starts with three integers n,m,k(1≤m≤n≤1018,1≤k≤10) on a line where k is the number o ...

  10. .NET面试题4

    常见面试题目: 1.字符串是引用类型类型还是值类型? 2.在字符串连接处理中,最好采用什么方式,理由是什么? 3.使用 StringBuilder时,需要注意些什么问题? 4.以下代码执行后内存中会存 ...