2017-03-01 11 views
0

私はcasperJSでさまざまな方法を試してみて、フォームに記入して送信しました。コードを以下に示します。最終的には、IAG CargoのWebポータルで貨物航空券のステータスを自動的にチェックするロボットを構築しています。Casperjsを使用してフォームを送信

Sendkeysはフォームを完了しますが、[検索]ボタンをクリックすることはできません。

casperJSの使用フォームの充填方法はまったく機能しません。

これは珍しいウェブサイトですか、何か間違っていますか?プログラム以下のコードで

はthis.clickLabel(「検索」、「ボタン」)

行に失敗するように見えます。

以降のコードは実行されません。

(最終ページには、「Airwaybill見つからない」が表示されますので、私はこの例ではダミーairwaybill番号を使用している)

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

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

phantom.cookiesEnabled = true; 

casper.userAgent('Mozilla/4.0 (compatable; MSIE 6.0; Windows NT 5.1)'); 

casper.start('https://www.iagcargo.com/iagcargo/portlet/en/html/601/main/search'); 

casper.waitForSelector("#awb_cia", function() { 

    this.echo('Selector found'); 
    casper.capture('iag_start.png'); 

    this.sendKeys('#awb_cia','125'); 
    this.sendKeys('#awb_cod','12345675'); 

}); 

casper.then(function step2() { 

    this.clickLabel('SEARCH', 'button'); 

    this.echo('this is step 2');  

    casper.capture('iag_end.png'); 
    }); 


require('utils').dump(casper.steps.map(function(step) { 
    return step.toString(); 
})); 


casper.run(); 

答えて

0

をクリックすることができない多くの理由で持つことができる共通の問題です。 clickLabel()はボタンタグではなく入力タグなので、ここでは機能しません。このページで見たものは次のとおりです。

これは試すことができます。 casper.click( 'input [value = "Search"]');

一般的に、要素をクリックするときに試してみることができます。

  1. は、例えば、viewportSizeを変更してみてください viewportSize:{width:1024、height:768}

これは、casperjsがページに表示されていないものをクリックしないためです。

  1. xpathセレクタを使用している場合は、代わりにCSSを試してください。 XPathセレクタは脆弱で、すべてのブラウザで同じように機能しません。

  2. 場合によってはjqueryのクリックが有効です。

    casper.evaluate(関数(){ VAR要素= document.querySelector( 'span.control.critical.closer'); $(要素).click();} )。ボタンタグ内の機能がある場合

  3. 、あなたは直接その関数を呼び出すことができます。例えば。 検索 その関数を直接呼び出すことができます。 casper.someFunc();

0

var casper = require('casper').create({ 
 
    verbose: true, 
 
    logLevel: "debug", 
 
    waitTimeout: 60000, 
 
    resourceTimeout: 10000, 
 
    viewportSize: { 
 
    width: 1024, 
 
    height: 768 
 
    }, 
 
    pageSettings: { 
 
    javascriptEnabled: true, 
 
    loadImages: true, 
 
    loadPlugins: true 
 
    } 
 
}); 
 

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

 
phantom.cookiesEnabled = true; 
 

 
casper.userAgent('Mozilla/4.0 (compatable; MSIE 6.0; Windows NT 5.1)'); 
 

 
casper.start('https://www.iagcargo.com/iagcargo/portlet/en/html/601/main/search'); 
 

 
casper.waitForSelector("#awb_cia", function() { 
 

 
    this.echo('Selector found'); 
 
    casper.capture('iag_start.png'); 
 

 
    this.sendKeys(x('//*[@id="awb_cia"]'),'125'); 
 
    this.sendKeys('#awb_cod','12345675'); 
 
    this.capture('iag_middle.png'); 
 

 
}); 
 

 
casper.then(function step2() { 
 

 
    if(this.exists('body > div.cuerpo > div.cuerpo > div.contenido > div > form > table > tbody > tr > td:nth-child(3) > input')){ 
 

 
    this. click('body > div.cuerpo > div.cuerpo > div.contenido > div > form > table > tbody > tr > td:nth-child(3) > input'); 
 

 
    } 
 

 

 
}); 
 
casper.then(function step3() { 
 
    this.echo('this is step 2'); 
 

 
    casper.capture('iag_end.png'); 
 
}); 
 

 
//require('utils').dump(casper.steps.map(function(step) { 
 
// return step.toString(); 
 
//})); 
 

 

 
casper.run();

+0

は、これは完全なセクターのパスを使用し、クリックするのに必要な動作します –

関連する問題