1

私がテストしているWebページのドロップダウンのオプションは、以前のテキストボックスに提供された値に依存し、選択します(たとえば、指定された通貨と金額に基づいて、製品のドロップダウンに適切な値が表示されます。値がない場合、提供されたドロップダウンは空白になります。 )。

ここで、通貨と金額の値を指定しましたが、製品のドロップダウンはまだ空白です。提供された以前のデータに基づいてフィルタリングされた値をフェッチしていません。私はSeleniumサーバー(2.24.1)を使用しており、EclipseでTestNGを使用してJavaでスクリプトを記述し、IE8でテストしています。

検査すると、ドロップダウンは他のドロップダウンと同じであり、ページ上の他の要素の値に基づいてオプションのみが変更されます。WebアプリケーションはJava(Wicketフレームワーク)で開発されています。

Seleniumコード:

selenium.select(ownerBranch, "label=4521 - Branch one");

selenium.select(currency, "label=SEK - Swedish kronor");
Thread.sleep(sleep);

selenium.type(amountSantioned,"100000");
Thread.sleep(sleep);

selenium.click(chooseLoanTermBymatDate);
Thread.sleep(sleep);

timeNow=Calendar.getInstance();
timeNow.add(Calendar.DATE,+360);selenium.type(maturityDate,dateformat.format(timeNow.getTime()));
Thread.sleep(sleep);

selenium.type(amountSantioned,"100000");
Thread.sleep(sleep);

selenium.select(serviceDelChannel, "label=BackOffice");
Thread.sleep(sleep);
selenium.select(product, "label=");
Thread.sleep(sleep*2);
selenium.select(product,"label=LN7292 - Consumer loan for Year2026");
Thread.sleep(sleep);
4

1 に答える 1

0

I'm not going to try to reproduce the issue (if you can point me to a publicly visible site with similar behaviour, I might test it), so I'm only taking a guess here:

Since Selenium RC is written in pure Javascript and "only" firing change events on selecting values from drop-downs, Wicket is probably waiting for something else or relying on a completely different mechanism.

Things you can try:

  • Use Selenium WebDriver. Selenium RC has been deprecated for over a year now, because it had serious technical limitations (you might have just bumped into one) that are now solved by WebDriver. Also, you won't ever have to use Thread.sleep() again (although I'm almost sure it could be got rid of even here, mostly). This solution is the most painful, but is almost guaranteed to work well, because WebDriver behaves like a real user.
  • やり取りしているselenium.fireEvent()すべての要素を呼び出します。有用なイベントは、、、またはその中間にある可能性があります。inputfocusblurclick
  • ドロップダウンを変更するたびに呼び出すselenium.keyPressNative(String.valueOf(KeyEvent.VK_ENTER))(ネイティブに押す)。Enter変更されたドロップダウンがこの前にフォーカスされていない場合は、事前にフォーカスする必要がある場合がありますfocus()
  • JS メソッドを使用する代わりに、ユーザーの動作を可能な限り近くでシミュレートしようとする面倒な方法: を使用する代わりに、ドロップダウン要素select()を試してから、繰り返し押してオプションの 1 つを選択し、次に.focus() Down arrowEnter
于 2012-07-05T12:04:40.803 に答える