标签: casperjs

WaitFor,Ajax和Tester API

如果我想使用测试仪API,并使用说assertSelectorExists,我怎么能等待选择器?我知道你可以使用waitForSelector的onTimeout回调并在那里手动创建一条消息,但它似乎打败了能够断言的目的......

casperjs

1
推荐指数
1
解决办法
1323
查看次数

CasperJS通过this.evaluate注入javascript

今天我尝试使用CasperJS和PhantomJS一起向远程页面注入一些javascript逻辑.

嗯,我很惊讶因为:

casper.then(function() {
    console.log(this.evaluate(function() {
        function myMethod() {
            return 'Any thing?!';
        }
        return myMethod();
    }));
    console.log(this.evaluate(function() {
        return myMethod();
    }));
});
Run Code Online (Sandbox Code Playgroud)

我试过很多组合...喜欢:

casper.evaluate(...)
this.evaluate(...)
casper.page.evaluate(...) <- directly to phantomJS
this.page.evaluate(...)   <- as above
Run Code Online (Sandbox Code Playgroud)

第一个案例给了我我想要的东西.但接下来要求评估作为一个白痴,从未见过上面执行过的代码.

我只想更改变量,函数和其他远程站点js运行时.

任何人都可以告诉我为什么会这样吗?问候.

javascript phantomjs casperjs

1
推荐指数
1
解决办法
2141
查看次数

如何使用Casperjs和fillSelectors选择下拉选项

我有以下表格:

<form name="security_page_toplevel_page_itsec_settings" method="post" action="options.php">
    <select id="itsec_strong_passwords_roll" name="itsec_strong_passwords[roll]">
        <option value="admin">admin</option>
        <option value="subscriber">subscriber</option>
    </select>
</form>
Run Code Online (Sandbox Code Playgroud)

但我无法使用以下代码选择"订户"选项:

this.fillSelectors('form#security_page_toplevel_page_itsec_settings', {
    'select[name="itsec_strong_passwords[roll]"]': 'subscriber'
}, true);
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

javascript forms html-select casperjs

1
推荐指数
1
解决办法
6715
查看次数

JS测试:从CasperJS和PhanthomJS触发jQuery keypress事件

我的网页有一个输入键按下事件的监听器.我试图运行下面的casperjs代码来触发此事件,但没有成功.

虽然没有提示错误,但是(evaluate)函数返回true并且代码在我的chrome控制台上工作正常,应该向服务器发送请求的函数结果永远不会发生

casper.then(function(){
    var result = this.evaluate(function(term){
        var search_form_id = "#search-form";
        $(search_form_id).val(term);

        jQuery(search_form_id).trigger(jQuery.Event('keypress', {which: 13, keyCode: 13}));

        return true;
    }, 'Techcrunch');
    console.log(result);
});
Run Code Online (Sandbox Code Playgroud)

这是关于PhantomJS和jQuery事件的任何问题吗?

javascript testing jquery phantomjs casperjs

1
推荐指数
1
解决办法
2898
查看次数

Casperjs ajax调用 - waitForResource和解析错误

Casperjs是一个很棒的工具.我已经能够理解某些基础知识.但是,我正在努力解决两个问题.首先,为了关闭原因,我将代码分成几个函数.我得到一个解析错误.我已经添加了选项verbose: true, logLevel: "debug",看它是否指出了行号,但我没有得到任何结果.其次,我想做一个异步的ajax调用.我正在使用,waitFor但我读了这篇文章是为了更有效的方式.如何设置waitForResource()跟踪AJAX请求?以及如何显示解析错误行?

var urls = ['http://9gag.tv/'];
var casper = require('casper').create({
    verbose: true,
    logLevel: "debug"
});

function getNumberOfItems(casper) {
    return casper.getElementsInfo(".listview .badge-grid-item").length;
}

function tryAndScroll(casper) {
  casper.page.scrollPosition = { top: casper.page.scrollPosition["top"] + 4000, left: 0 };
  var info = casper.getElementInfo('.badge-post-grid-load-more');
  if (info.visible) {
    var curItems = getNumberOfItems(casper);
    if( curItems <= 60 ) {
        casper.waitFor(function check(){
          return curItems != getNumberOfItems(casper);
        }, function then(){
          tryAndScroll(this);
        }, function onTimeout(){
          this.echo("Timout reached");
        }, 10000); …
Run Code Online (Sandbox Code Playgroud)

javascript ajax casperjs

1
推荐指数
1
解决办法
4984
查看次数

casperjs uncaught错误:TypeError:尝试分配给readOnly属性

任何人都知道如何在casperjs中找出这个错误的原因?我试图在运行时运行的测试脚本是:

var errors = [];
casper.on("page.error", function(msg, trace) {
  this.echo("Error:    " + msg, "ERROR");
  this.echo("file:     " + trace[0].file, "WARNING");
  this.echo("line:     " + trace[0].line, "WARNING");
  this.echo("function: " + trace[0]["function"], "WARNING");
  errors.push(msg);
});

casper.on('resource.received', function(resource) {
    var status = resource.status;
    if(status >= 400) {
        casper.log('Resource ' + resource.url + ' failed to load (' + status + ')', 'error');

        errors.push({
            url: resource.url,
            status: resource.status
        });
    }
});



casper.test.begin('Are we online?', 3, function suite(test) {
    casper.start("http://www.google.com/", function() {
        test.assertTitle("Google", "Connected to google, internet …
Run Code Online (Sandbox Code Playgroud)

javascript casperjs

1
推荐指数
1
解决办法
1322
查看次数

将鼠标悬停在CasperJS上

如何对悬停在元素上后变为可见的元素执行单击事件.下面是HTML代码

<div class="jqtree-element jqtree_common">
<span class="jqtree-title jqtree_common" contenteditable="true">Notebook 1</span>
<span class="notebook-right">
<span class="notebook-date disappear" style="visibility: visible;">
<span class="notebook-commands-right">
<span class="notebook-commands appear-wrapper">
<span class="notebook-commands appear" style="display: none;">
<span class="fontawesome-button info">
<span class="fontawesome-button history">
<span class="fontawesome-button private">
<span class="fontawesome-button public" style="display: none;">
<span class="fontawesome-button remove">
<i class="icon-remove"></i>
</span>
</span>
</span>
</span>
</div>
Run Code Online (Sandbox Code Playgroud)

删除笔记本我正在使用以下代码

casper.then(function(){
  if(this.visible({type:'xpath', path:'/html/body/div[3]/div/div[1]/div[1]/div/div/div[1]/div[2]/div/div/ul/li[1]/ul/li[1]/ul/li[11]/div/span[2]/span[3]/span/span[5]/i'}))
  {
    this.click({type:'xpath', path:'/html/body/div[3]/div/div[1]/div[1]/div/div/div[1]/div[2]/div/div/ul/li[1]/ul/li[1]/ul/li[11]/div/span[2]/span[3]/span/span[5]/i'});
    });
    console.log('notebook '+ title +' deleted');
  } else {
     console.log('element not found');
  }
});
Run Code Online (Sandbox Code Playgroud)

在控制台中显示"无法调度mousedown事件.."

javascript hover casperjs

1
推荐指数
1
解决办法
3671
查看次数

Casperjs - 有没有办法等待n秒?

只是为了澄清,我不想等待一个条件,只需暂停n秒.这是我的代码,但是id不能按我预期的方式工作,我怀疑"等待"是异步的.我希望更改代码,以便打印1,等待5秒,打印2,然后打印3.现在它打印1,打印3,然后等待5秒并打印2.

var casper = require('casper').create();

var x = require('casper').selectXPath;
var fs = require('fs');
var parsedFile = "pfile.txt";

casper.start();

function wait5seconds() {
   casper.wait(5000, function() {
        this.echo('2');
   });
}

casper.then(function() {
  this.echo('1');
  wait5seconds();  
  this.echo('3');
});

casper.run();
Run Code Online (Sandbox Code Playgroud)

javascript casperjs

1
推荐指数
1
解决办法
7859
查看次数

如何调试casperJS中的javascript函数

如何evaluate在CasperJS中调试javascript函数(使用)?

这里有什么类似的东西alert()可以在需要时在命令行上打印值吗?

javascript debugging phantomjs casperjs

0
推荐指数
1
解决办法
3225
查看次数

将casper javascript数据插入CSV文件

我想将数据从casper JS传递到我目前使用的CSV文件

fs = require('fs');
fs.write('test.csv', "name, title", "a");
fs.write('test.csv', name.trim()+","+title.trim(), "a");
Run Code Online (Sandbox Code Playgroud)

这是一个循环,所以有很多记录

但是打印到CSV文件不会插入新行.它目前写得像这样,我只想要2列

Name    Title
name1   name1    name2   title2    name3   title3
Run Code Online (Sandbox Code Playgroud)

javascript phantomjs casperjs

0
推荐指数
1
解决办法
698
查看次数

标签 统计

casperjs ×10

javascript ×9

phantomjs ×4

ajax ×1

debugging ×1

forms ×1

hover ×1

html-select ×1

jquery ×1

testing ×1