私がテストしているウェブページがノックアウトを使用しています。私たちのサイトの他のページで、現在ノックアウトを使用していない私は同じ問題を抱えていません。私が持っているシナリオは、ページが開く場所です。私はさまざまな必須フィールドに入力し、保存ボタンをクリックします。最後のテキストフィールドに値が入力されてから保存ボタンがクリックされるまでの間に、以前に値を持つフィールドがクリアされ、スクリプトを続行できなくなります。ここで私が実行しているコードの例です:セレンのwebdriverがsendKeysに以前に入力された後にフィールドをクリアしています
driver.findElement(By.id("sku")).clear();
driver.findElement(By.id("sku")).sendKeys(itemNo);
driver.findElement(By.id("desktopThankYouPage")).clear();
driver.findElement(By.id("desktopThankYouPage")).sendKeys(downloadUrl);
driver.findElement(By.id("mobileThankYouPage")).clear();
driver.findElement(By.id("mobileThankYouPage")).sendKeys(mobileDownloadUrl);
driver.findElement(By.id("initialPrice")).clear();
driver.findElement(By.id("initialPrice")).sendKeys(initialPrice);
driver.findElement(By.id("submitSiteChanges")).click();
私はそれが最後のフィールドにテキストを入力する時、それは以前にそれらのテキストがクリアされたフィールドを保存クリックするまでの間に、言ったように私のテストは失敗します。問題は必ずしも起こらないということです。時にはテストは正常に実行され、それ以外の場合は正常に実行されることがあります。
私はThread.sleep(x)を入れてみました。特定のポイントで一時停止すると問題が解決するかどうかを確認することができます。私はまた、javascriptを使用して、バックグラウンドで実行中のAjaxを待つことを試みました。また、暗黙的にdriver.manage()。timeouts()。implicitlyWait(10、TimeUnit.SECONDS)を待機させてください。それのどれもが一見違いはありませんでした。
私はセレンサーバのバージョン2.13を実行しているし、すべての私のテストは、Firefox 8
に、この上の任意のヘルプを実行していただければ幸いです!
設定されている値が実際に設定されていることをどのように確認しましたか。提出をクリックした後、あなたのKOコードはどうなりますか?テンプレートの一部としてレンダリングされたKOにバインドされたDOM要素はありますか? – madcapnmckay
はい、送信ボタンをクリックする前にフィールドに値が存在することを確認しました。実際にはテストが合格することがあります。送信ボタンはバインドされたオブジェクトを受け取り、それをJSONに変換し、ajax経由でAPIに送信します。 JSONを作成する前に、Webドライバがいくつかのフィールドをクリアしているようです。 –
私は、ウェブドライバがフィールドをクリアしていることに疑いがあります。可能性としては、タイミング自体の問題や、イベントハンドラコードのバグなどのために、ページ自体がフィールドをクリアしている可能性があります。いずれかのフィールドにテキストを入力する前に非常に長いスリープ時間(30秒)を追加して、タイミングの問題を完全に排除しましたか?タイミングの問題を除外するために、各フィールドにテキストを入力する間に2秒間の遅延を追加しましたか? –