2011-01-14 14 views

答えて

1

あなたのソリューションは、通常のJavaScriptコードを見ることで発見された。..

あなたは常に持っているオプションは、値に入れ、手でコードから実際のOnChangeイベントをトリガすることです。

は、FirefoxのWindowsがアクティブであるとのOnChangeがトリガされるように防ぐことはないと、このlink text 問題に関する未解決の問題があります。

はtypeKeysコマンドを使用する前にこれを試してみてください:

selenium.selectWindow(null); 
+0

私はIDEを使用しています。これは私がやったことです。 [#実行中:| getEval | selenium.selectWindow(null)|| ] 動作しません。エラー:selenium.selectWindowは関数ではありません –

+0

私は通常、Selenium RCでしか動作しませんし、IDEでいくつかの問題を解決することもできません。あなたの質問をその情報で更新する必要があります – StefanE

3

あなたはセレン1.1を使用している場合は、手動で値を入力した後onChangeイベントをトリガするために使用することができますfireEventコマンドがあります。多分あなたの問題を解決するだろうか?

1

これは試す、のonchangeイベントをトリガするには(入力が文字rた)ソースは次のようになります

Typekeys targetID input 
FireEvent targetID focus 
Type  targetID input 

ために

<tr> 
<td>typeKeys</td> 
<td>//form/input</td> 
<td>r</td> 
</tr> 
<tr> 
<td>fireEvent</td> 
<td>//form/input</td> 
<td>focus</td> 
<tr> 
<td>fireEvent</td> 
<td>//form/input</td> 
<td>focus</td> 
</tr> 
<tr> 
<td>type</td> 
<td>//form/input</td> 
<td>r</td> 
</tr> 
</tr> 
<tr> 
<td>type</td> 
<td>//form/input</td> 
<td>r</td> 
</tr> 
8

を以下の3つのコマンドを実行しますIDE に私のために働きましたSelenium IDEでこのコマンドを追加:

fireEvent targetID blur

+0

これは受け入れられた答え(IMHO)。これは私が必要としていたものです。また、私の場合、これは 'type'ではなく' sendKeys'で使われなければなりませんでした。そんなにありがとう@trex。 – OscuroAA

5

Firefoxにはbugがあり、ブラウザウィンドウにフォーカスが外れている間に一部のイベントが実行されないようにします。これは、オートメーションテストを実行しているときに問題になる可能性があります。これは、ウィンドウのフォーカスが合っていなくてもタイピングしている可能性があります。この問題を解決するには

私は私のテストにはJavaScriptを注入し、「手動」変更イベントをトリガー:

//suppose "element" is an input field 
element.sendKeys("value"); 
JavascriptExecutor jsExecutor = (JavascriptExecutor) driver; 
jsExecutor.executeScript("$(arguments[0]).change();", element); 

あなたは私が変更イベントをトリガするためにjQueryを使用している、気づいたかもしれませんが。アプリでjQueryを使用していない場合は、hereにvanilla javascriptを使用してトリガーする方法を確認できます。

誰かを助ける希望。

+0

ファイル入力フィールドで機能しないようです – ndtreviv

1

それは「のSendKeys」コマンドでは、これを修正するために実装されたようになっています

https://code.google.com/p/selenium/issues/detail?id=5451

これは私のために働きました。

<tr> 
    <td>sendKeys</td> 
    <td>id=Quantity</td> 
    <td>Type stuff here</td> 
</tr> 
0

私はAjaxで作成したドロップダウンリストで同様の問題を抱えていました。フィールドにユーザタイプとして
は、システムはさらに悪化target='#'

とのリンクとしてそれぞれ、いくつかのオプションを持つwはAJAX divを表示し、充填のonChange()に呼び出された関数がありましたシステムフラグ、およびそのフラグがform.submitの検証として使用される() (オハイオ州、痛み)とにかく

、このために私の解決策:
1 - セレンのSendKeysコマンドのAjaxのdivので、表示されます

<tr> 
    <td>sendKeys</td> 
    <td>id=txtTipoDocumento</td> 
    <td>ipsum lorem</td> 
</tr> 

2から

<tr> 
    <td>waitForElementPresent</td> 
    <td>link=ipsum lorem</td> 
    <td></td> 
</tr> 

3表示されるように、予想されるオプションを使用してリンクを待つ - セレンclickAtにリンク

<tr> 
    <td>clickAt</td> 
    <td>link=ipsum lorem</td> 
    <td>10,20</td> 
</tr> 


4 - ここでの一つでありますキャッチ:手放すonChange()ぼかしイベント。間、組版の送信ボタンををClickAt()コマンドを実行最後に、確かに、私はセレン作らない - また、

<tr> 
     <td>fireEvent</td> 
     <td>id=txtTipoDocumento</td> 
     <td>blur</td> 
    </tr> 
    <tr> 
     <td>fireEvent</td> 
     <td>id=selSerie</td> 
     <td>change()</td> 
    </tr> 
    <tr> 
     <td>fireEvent</td> 
     <td>id=selSerie</td> 
     <td>blur</td> 
    </tr> 
    <tr> 
     <td>focus</td> 
     <td>id=imgDataElaboracao</td> 
     <td></td> 
    </tr> 

5は異なるフィールドにフォーカスを設定するには、ブラウザをフォーチェmouseDownイベントとのMouseUpは

<tr> 
    <td>mouseDown</td> 
    <td>id=btnSalvar</td> 
    <td></td> 
</tr> 
<tr> 
    <td>focus</td> 
    <td>id=btnSalvar</td> 
    <td></td> 
</tr> 
<tr> 
    <td>clickAt</td> 
    <td>id=btnSalvar</td> 
    <td>10,20</td> 
</tr> 


ないエレガントなコマンドが、それが働きました。

関連する問題