美文网首页
使用selenium-webdriver检测网页资源加载错误

使用selenium-webdriver检测网页资源加载错误

作者: 寒天修竹 | 来源:发表于2018-09-11 14:27 被阅读0次

为什么需要这个

网页开发中,页面修改后总是需要在浏览器中测试是否有js、css、图片等资源加载错误,在页面少的时候还可以人工一个一个测试,页面多了以后就很烦躁很无聊了。

预计达到的效果

使用数组格式给出要测试的所有页面地址,通过selenium自动测试并输出错误日志。

操作步骤

一、安装selenuim-webdriver

npm install --save-dev selenium-webdriver
// 或
yarn add --dev selenium-webdriver

二、添加测试脚本test.js

const { Builder, By, Key, until, logging } = require('selenium-webdriver');
const chrome = require('selenium-webdriver/chrome');
const fs = require('fs');

// 测试页面地址
const testPages = [
    'http://www.baidu.com',
    'http://www.google.com',
];

// 记录错误页面
let badPages = [];

(async function example() {
    let driver;
    for (let i = 0; i < testPages.length; i += 1) {
        // PC端
        let options = new chrome.Options().addArguments('start-maximized');
        // 手机网页端
        // let options = new chrome.Options().setMobileEmulation(
            {deviceName: 'iPhone 6/7/8'});
        driver = chrome.Driver.createSession(options);
        try {
            var testUrl = testPages[i];
            var pass = true;
            var error = [];
            await driver.get(testUrl);
            // 等待1s
            await driver.sleep(1000);
            // 获取首屏截图
            await driver.takeScreenshot().then(
                function(image) {
                    fs.writeFileSync('screenshot/' + encodeURIComponent(testUrl) + '.png', image, 'base64', function(err) {
                        err && console.log(err);
                    });
                }
            );
            // 页面滚动到底部
            await driver.executeScript('window.scrollTo(0, document.body.scrollHeight)');
            // 等待1.5s后,打印浏览器错误日志
            await driver.sleep(1500);
            await driver.manage().logs().get(logging.Type.BROWSER)
                .then(function(entries) {
                    entries.forEach(function(entry) {
                        if (entry.level.name === 'SEVERE') {
                            pass = false;
                            console.log('[%s] %s', entry.level.name, entry.message);
                            error.push(entry.message);
                        }
                    });
                });
            // 控制台输出检测状态
            if (pass) {
                console.log('[ 页面 ] ' + testUrl + ' 正常');
            } else {
                console.log('[ 页面 ] ' + testUrl + ' 有错误');
                badPages.push({
                    url: testUrl,
                    error: error
                });
            }
        } finally {
            await driver.quit();
        }
    }

    console.log('包含错误的页面:');
    console.log(badPages);

    // 写入测试结果
    fs.writeFileSync('screenshot/error.json', JSON.stringify(badPages, null, 4), function(err) {
        err && console.log(err);
    });
})();

三、运行脚本

node test.js

四、查看结果

通过截图和错误日志文件,查看测试结果。

遇到的坑

最大化报错

UnhandledPromiseRejectionWarning: WebDriverError: unknown error: failed to change window state to maximized, current state is normal

出现问题的代码:

// 生成实例
driver = await new Builder().forBrowser('chrome').build();
// 最大化窗口
await driver.manage().window().maximize();

解决办法:
初始化时传入最大化参数

let options = new chrome.Options().addArguments('start-maximized');
driver = chrome.Driver.createSession(options);

下一步计划

把页面重要交互逐步加入selenium自动测试中。

参考

[原创] 解决Selenium的"failed to change window state to maximized" 窗口最大化问题

相关文章

  • 使用selenium-webdriver检测网页资源加载错误

    为什么需要这个 网页开发中,页面修改后总是需要在浏览器中测试是否有js、css、图片等资源加载错误,在页面少的时候...

  • Python爬虫

    介绍使用 Beautiful Soup抓取静态网页,使用Selenium-WebDriver抓取动态网页 Robo...

  • 错误监控

    前端错误分类 即时运行错误:代码错误 资源加载错误:资源加载失败 错误捕获方式 即时运行错误-- try...ca...

  • 错误监控

    前端错误的分类 即时运行错误—代码错误 资源加载错误(比如图片加载错误,CSS加载错误,JS加载错误等) 错误的捕...

  • ‘我’很"懒" ----- 实现图片懒加载

    什么是懒加载 懒加载是一种 网页优化技术 作用 图片作为一种网页资源,请求时同样将占用网络资源,导致网页首屏的加载...

  • 读书笔记(04) - 错误监控 - JavaScript高级程序

    错误类型 即时运行错误 (代码错误) 资源加载错误 常见的错误 1. 类型转换错误 建议使用全等===操作符 2....

  • WebKit架构(二)

    WebKit资源加载机制 资源 网络和资源加载是网页的加载和渲染过程中的第一步,也是必不可少的一步。网页本身就是一...

  • 网页图片加载错误,使用默认图

  • UIWebView 教程

    1.UIWebView加载远程网页 2.UIWebView加载本地资源 test.html 3.OC调用网页Jav...

  • react-native-webview加载本地H5

    webview使用uri属性加载html资源。1.简单且常变动的需求可以选择加载远程网页地址2.当需要接入的网络资...

网友评论

      本文标题:使用selenium-webdriver检测网页资源加载错误

      本文链接:https://www.haomeiwen.com/subject/ldjsgftx.html