casperjs 各控件实现方法

来源:互联网 发布:js文本框获得焦点 编辑:程序博客网 时间:2024/06/06 01:16

1.LINK

 this.click('a[href^="020_test_source_c1.html"]');  -- 后方一致

this.click('a[href*="mhostname=algpae0a"]');       -- 部分一致

 this.click('a');   -- 画面上只有一个link的话可用

 

2.下拉框

A.下拉框里既定的某个值选定

this.fillSelectors("form[name='form']",{
    "select[name='projectid']": 'test'});

B.下拉框里的内容可变,将第几个值选中

 //プルダウンにINDEX 1を設定
            this.evaluate(function(){
                document.querySelector('select[name = "version"]').selectedIndex = 1;
                return true;
            });
            //プルダウンの値を取得
            var va = this.evaluate(function(){
                return document.querySelector('select[name = "version"]').value;
            });

            this.fillSelectors("form[name='form']",{
            "select[name='version']": va});

3.单选框

this.evaluate(function(){
    document.querySelector("input[type='radio'][name = 'url']").click();
});

this.evaluate(function(){
    document.querySelector("input[type='radio'][value='prd|alge|algew|now']").click();
});

4.复选框

A.固定值的框选中
this.evaluate(function(){
    document.querySelector("input[type='checkbox'][name = 'all']").click();
});

B.框的内容是可变的
//パス一覧を取得する
    var Nodes = this.getElementsAttribute("input[type='checkbox'][name=path]",'value');
    for(var i=0; i<Nodes.length; i++){
      this.echo(Nodes[i]);
      //"/G"を含まないパスを選択し除外する
      if (Nodes[i].indexOf("/G") == -1) {
         this.evaluate(function(v){
         document.querySelector("input[type='checkbox'][name='path'][value ='"+v+"']").click();
         },Nodes[i]);
      }
    }

5.按钮
this.evaluate(function(){
    document.querySelector("input[type='submit'][value=' 複製 ']").click();
});

this.evaluate(function(){
    document.querySelector("input[type='submit'][name='approval']").click();
});

this.evaluate(function(){
    document.querySelector("input[type='button'][value=' Subversion資源払出 ']").click();
});

 

6.确认窗口

// 複製をクリック
this.evaluate(function(){
     document.querySelector("input[type='submit'][value=' 複製 ']").click();
});
casper.setFilter("page.confirm",function(message){
    self.received = message;
    this.echo('message to confirm:' + message);
    return true;
});

 

7.文本框

this.evaluate(function(){
    document.querySelector("input[name='si_key']").setAttribute("value","test");
});

this.evaluate(function(){
    document.querySelector("input[name='from']").setAttribute("value","/");
});

 

8.文件下载与上传

A.下载

//システム日付
var now = new Date();
var yyyymmdd = now.getFullYear()+( "0"+( now.getMonth()+1 ) ).slice(-2)+( "0"+now.getDate() ).slice(-2);

var releaseNo = yyyymmdd+"_test"; //リリース番号

var logdir    = "test/"+yyyymmdd+"_01";   // ログ格納場所

casper.then(function() {
    this.echo('Main Menu');
    this.wait(1000, function() {
        this.capture(logdir +'/test.png');
        var downloadurl = ""
        var listtext  = releaseNo+"_LIST.txt";   //ファイル名
        downloadurl = "https://XX.XX.XX.XX:XXXX/Common/download.html?mode=ascii;dir=/Library/RealVersion/log/Release/prd/"+releaseNo+"/.rvn/list/Release/"+listtext;
        this.download(downloadurl,'slm/releasefile/'+listtext);
    });
});

 

B.上传

casper.then(function() {
    this.wait(1000, function() {
        this.capture(logdir +'/test.png');
        this.page.switchToChildFrame(0);
        this.page.switchToChildFrame('right');
       
        var listtext  = releaseNo+"_LIST.txt";     //ファイル名
        //リストファイルをアップロードする
        this.page.uploadFile("input[name='check_file']",'D:/casperjs/bat/releasefile/'+listtext);
        //準備リスト確認クリック
        this.evaluate(function(){
           document.querySelector("input[type='submit'][value='確認']").click();
        });
       
        this.page.switchToParentFrame();
        this.page.switchToParentFrame();
    });
});

0 0