首页 > 解决方案 > 使用 jsdom 解析 html 文件正文

问题描述

首先,我是 UI 方面的新手,所以在给出解决方案之前请记住这一点。我有一个在量角器规范文件中传递给 jsdom 的 url。它返回必须解析的响应。jsdom逻辑:

   describe('angularjs homepage', function () {

        it('open nho website', function () {
         const { JSDOM } = require("jsdom");
         window = (new JSDOM(``, { runScripts: 'dangerously', url: 'https://example.com/getSeleniumGrid.jsp?locale=US&browser=Firefox&fabric=corp&teamName=xyzTeam' })).window;
//Used so many permutations n combinations on windows object
         const machinename=window.text();
         console.log("hi:"+machinename);

        });
    });

我的 html 响应

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>


    </head>
    <body>
        example.com

    </body>
</html>

我想要身体里面的东西。我怎么做?

标签: node.jsprotractorjsdom

解决方案


APInew JSDOM('<put html code at here>', options)要求你传入预先知道的 HTML 代码,如果你想让 jsom 从给定的 url 获取 HTML 代码,你不能使用这个 API,但是使用JSDOM.fromURL(url, options)

describe('angularjs homepage', function () {

    it('open nho website', function () {

        var jsdom = require("jsdom");

        var url = 'https://example.com/getSeleniumGrid.jsp?locale=US&browser=Firefox&fabric=corp&teamName=xyzTeam';

        // if your network access behind proxy, 
        // please create a resourceLoader, and
        // specify the resources in below options and pass the options
        // into JSDOM.fromURL(url, options)

        var resourceLoader = new jsdom.ResourceLoader({
            proxy: "<your proxy address>", 
            strictSSL: false,
        });

        var options = { 
            resources: resourceLoader,
        };

        jsdom.JSDOM.fromURL(url, options) 

        .then(function(dom){
            console.log(dom.window.document.querySelector('body').textContent.trim())
        });

    });
});

推荐阅读