0

CasperJS を使用してフォームを送信しましたが、すべて問題ありません。

フォームコード:

<form method="post" action="validation.htm">

<input id="name" type="text" value="" name="dataname"></input>
<input id="url" type="text"  value="" name="dataurl"></input>
<textarea id="desc" cols="30" rows="4" name="description"></textarea>

<select id="color" size="1" name="datacolor">
  <option value="Red">Red</option>
  <option value="Black">Black</option>
  <option value="Blue">Blue</option>
</select>

</form>

casperjs コード:

casper.fill('form',
    dataname: 'Anton',
    dataurl: 'http://example.com',
    description: 'testing text...',
    datacolor: 'Blue'
, 1);

しかし今datacolor、ページにリストされていない値をプッシュする必要があります。

だから、このようなもの:

casper.fill('form',
    dataname: 'Anton',
    dataurl: 'http://example.com',
    description: 'testing text...',
    datacolor: 'Yellow'
,1);

しかし、もちろんうまくいきません。CasperJS を使用してこれを行う方法はありますか?

4

2 に答える 2

1

を使用して、送信する前に に新しいをcasper.evaluate追加できます。ページでプレーンな JavaScript を実行し、好みに合わせて操作できます。optionselect

casper.evaluate(function(){
    var o = document.createElement("option");
    o.setAttribute("value", "Yellow"); // what is sent to the server
    o.innerHTML = "Yellow"; // what is shown to the user
    document.querySelector("#color").appendChild(o);
});

casper.fill('form', {
    dataname: 'Anton',
    dataurl: 'http://example.com',
    description: 'testing text...',
    datacolor: 'Yellow'
}, true);

注:構文が少しずれてい{ ... }ます。casperjs スニペットのフォーム フィールドの周りを忘れてしまいました。

于 2014-06-30T17:08:44.613 に答える