zoukankan      html  css  js  c++  java
  • 入门phantomjs

    前言

      phantomjs是一个无界面浏览器,用来操作web页面的一个工具,比如登录,提交表单等等。

     语法框

    //创建一个浏览器对象
    var page = require('webpage').create();
    
    
    //传参部分
    //var = system = require('system');
    //检查参数长度
    
    //if (system.args.length === 1){}
    //console.log('Usage: phantomfs iframe.js <some URL>');
    // phantom.exit();}
    //参数获取
    
    //var address ;
    
    //address = system.args[1];
    
    
    //日志输出编码
    
    phantom.outputEncoding="gbk";
    //web页面打开操作
    page.open("url",function(status){
       //输出页面标题
      console.log(page.title); 
      //截图...
    page.render("f51.png")
    
    if(status == "success"){
    
     //此处可以写js 代码了。注意,此处的代码是并行执行的,要用setTimeout处理,如果多次调用写多个,延迟时间 平行顺延...
    setTimeout(function(){
      
     page.evaluate{
         //真正操作页面js代码的地方//好像不能用for指令,我没操作成功
       if ( typeof(jQuery) == "undefined" )
                {
                    // 如果没有jquery,远程加载一个
               page.injectJs('http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js'
       );
                }
        
    
    
    
    
    };
    
    
    
    },2000);
    
    
    setTimeout(function(){
      
    //截图
    page.render("end10101010.png")
    
    //退出...
    
    phantom.exit(0);
    console.log("Page failed to load.");
    
    },4000);
    
    
    
    
    
    
    
    
    
    
    
    
    }
    
    else{
    //截图
    page.render("end10101010.png")
    
    //退出...
    
    phantom.exit(0);
    console.log("Page failed to load.");
    }
    
    
    
    
    
    });

    html元素遍历常用指令

    #加载ifame,假设ID为contentframe

    document.getElementById("contentframe").contentDocument

    #加载ID

    document.getElementById("row_3")

    #加载元素

    document.getElementsByTagName("td")  //返回值是元组

    #支持连续操作

    document.getElementById("contentframe").contentDocument.getElementById("row_3").getElementsByTagName("td")[0].getElementsByTagName("input")[0].click()

    #获取值

    document.getElementById("row_3").[innerText,innerHtml,value];赋值="..."

    #jq常用遍历

    $("#id...").find("元素,返回查找的元素以后的所有集合").children("元素子元素,返回数组")

    #jq 操作iframe

    $("iframe_id...").contents().find("").children("")

    程序执行

    443端口运行方法

    phantomjs.exe    --ignore-ssl-errors=yes  hello.js  //heloo.js为语法框里的代码

    总结:

    参考资料

       百度,google...

  • 相关阅读:
    3. Image Structure and Generation
    STM32F103
    10.2 External interrupt/event controller (EXTI)
    10.1 Nested vectored interrupt controller (NVIC) 嵌套矢量中断控制器
    ibatis 使用 in 查询的几种XML写法
    文字纵向打印
    oracle每天清理归档日志
    使用语句查询mssql死锁
    Xml序列化UTF-8格式错误
    Nginx的优点
  • 原文地址:https://www.cnblogs.com/whf191/p/7357663.html
Copyright © 2011-2022 走看看