CasperJS不能点击一个按钮DIV(CasperJS cannot click on a DIV

2019-10-24 07:12发布

我一直在使用CasperJS网站刮项目。 这是一个ASPX的网站。 我可以登录到网站,然后填写运行搜索的形式,但填写表格后,我无法模拟的DIV按钮点击。 搜索运行使用AJAX,但是当我在等待几秒钟后,捕获页面不显示所拍摄图像的结果。 搜索按钮由DIV,并在点击它运行发送AJAX请求检索搜索结果其他隐藏的JavaScript函数。

这里是我的代码。

var casper = require('casper').create({
    clientScripts: ['js/jquery-1.11.3.min.js']
});

var x = require('casper').selectXPath;

casper.userAgent('Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; GTB7.4; InfoPath.2; SV1; .NET CLR 3.3.69573; WOW64; en-US)');

casper.start('https://example.com/finder.aspx');

casper.then(function () {
    this.sendKeys('#UserName', 'xxxxx');
    this.sendKeys('#Password', 'yyyyy');
    console.log('Fill login credentials');
    casper.capture("screen1.png");

    this.thenClick('input[type=submit]');
});

casper.wait(3000, function () {
    console.log('Login');
    casper.capture("screen2.png");
});

casper.then(function () {
    this.fill('form[name="searchForm"]', {
        '$ddType': 'ABCD',
        '$rbGender': '0',
    }, true);
});

casper.wait(3000, function () {
    this.sendKeys('#Type_I', 'ABCD');
    this.sendKeys('#ProviderId', '1111111111');
    this.sendKeys('#txtNameFirst', 'My');
    this.sendKeys('#txtNameLast', 'Name');
    this.sendKeys('#txtZipCode', '11111');
    this.sendKeys('#txtBirthDate', '01/11/1987');
    console.log('Form filled');
    casper.capture("screen3.png");
});

casper.thenClick('#btnSubmit', function () {
    console.log('Submitted');
});

casper.wait(3000, function () {
    casper.capture("screen4.png");
});

这是按钮DIV需要一个点击。

<div id="btnSubmit" class="dxb">
    <span>Submit</span>
</div>

所述screen4.png(如相同screen3.png)仅示出了一个填充搜索表单但或者任何结果(提交时点击显示在该假想的)没有“中..”的信息。 我怎样才能触发表单提交? 正常的形式提交不检索搜索结果。


PS:我尝试以下方法来触发提交按钮内部evaluate()

按Enter键,而在一个文本框(这在现实中显示的结果)

方法1

var e = jQuery.Event("keydown");
e.which = 13;
$("#txtZipCode").trigger(e);

方法2

this.sendKeys('#txtZipCode', casper.page.event.key.Enter, {keepFocus: true});

点击该按钮DIV。

方法1

$('#btnSubmit div input').trigger('click');

方法2

$('#btnSubmit').click();

方法3

var mouse = require("mouse").create(casper);
this.mouse.click("#btnSubmit");

仍然没有运气。

Answer 1:

casper.then( function () { this.clickLabel('Submit', 'span'); });

我碰到了类似的问题,这为我工作。



文章来源: CasperJS cannot click on a DIV button