是否可以验证远程页面上是否存在css选择器?

时间:2018-02-19 14:09:37

标签: c# .net web css-selectors

我想用C#检查远程网页上的一些信息。

第一个问题,是否可以在不使用Web浏览器的情况下完全加载(使用Javascript)网页,只需使用URL?

第二个问题,是否可以验证没有浏览器的远程页面上是否存在css选择器,只有URL?

感谢您的聆听!

1 个答案:

答案 0 :(得分:0)

如果你的意思是'远程'而不是“遥远的”#39;然后 - 是的,好心的。

你的问题开始询问C#然后提到javascript。 不确定为什么语言环境会发生变化 - 但我会尝试回答这两种情况。

  1. 您可以使用Javascript加载页面。

    是:您需要做的是对URL执行GET请求。 关于你在这个阶段使用Javascript做什么的有趣的事情是,你在网络浏览器环境中做的任何GET请求都可以访问在该浏览会话中设置的cookie和身份验证 - 特别适合测试自动化。例如:您需要下载PDF,但PDF受身份验证检查保护。

  2. 
    
        xmlhttp=new XMLHttpRequest();
        xmlhttp.open("GET", "http://www.google.com", false);
        xmlhttp.send();
        var data = JSON.parse(xmlhttp.responseText);
    
    
    

    这将返回您请求的URL的html内容,如果它是二进制文件,则返回二进制内容。 如果是html内容,您可以使用javascript将当前页面源更改为您刚才请求的页面源。

    例如:

    document.documentElement.innerHTML = myReturnedData;

    该页面将立即加载并显示返回的页面内容。

    1. 如果要验证CSS Selector是否存在/对远程页面有效,那么您需要执行的第一步是下载该远程页面的页面源。 我建议使用HtmlAgilityPack及其扩展包 https://github.com/hcesar/HtmlAgilityPack.CssSelector
    2. 安装完成后,您将能够实例化HtmlDocument,然后使用您指定的定位器查询文档。

      var doc = new HtmlAgilityPack.HtmlDocument();
      doc.Load("test.html");
      
      IList<HtmlNode> nodes = doc.QuerySelectorAll("div .my-class[data-attr=123] > ul li");
      HtmlNode node = nodes.QuerySelector("p.with-this-class span[data-myattr]");