私は、Selenium 2.0とJavaを使用してアプリケーションを自動化しています。 WebElementのランダムIDを生成して問題を克服し、それをクリックする方法を明確に理解したいと思います。 私はすべてが唯一の語尾が異なることをダウン私のドロップの要素のリストを持っている:私は内のランダムな変数を宣言したところ、私はランダムクラスを呼ばれたのは何250JavaでSeleniumを使用してランダムなWebElementを選択する
までように
driver.findElement(By.id(""uxMiniFinderVoyageSelect_chzn_o_1")
driver.findElement(By.id(""uxMiniFinderVoyageSelect_chzn_o_2")
driver.findElement(By.id(""uxMiniFinderVoyageSelect_chzn_o_3")
driver.findElement(By.id(""uxMiniFinderVoyageSelect_chzn_o_4")
とを1
250からRandom random = new Random();
int x = random.nextInt(250) + 1;
範囲は、今、私はこのよう
private WebElement cruiseSailing = driver.findElement(By.id("uxMiniFinderVoyageSelect_chzn_o_" + x));
私の要素を探しています210
これはすべて問題なく、期待どおりに動作しています。私が直面している問題は、ドロップダウンからこれらの要素のいくつかを選択した後に時々エラーメッセージが表示されることです。私のテストケースによると、このエラーをキャッチし、スクリーンショットをキャプチャし、ドロップダウンから別の要素を選択する必要があります。私はcruiseSailing
要素を設定したら、しかし、それは以上の同じ要素を選択し、over.Pleaseは、次のコード例を参照してください。
private WebElement cruiseSailingDropDown = driver.findElement(By.id(Some ID));
private WebElement errorMessage = driver.findElement(By.xpath("some xpath expression"));
private WebElement cruiseSailing = driver.findElement(By.id("uxMiniFinderVoyageSelect_chzn_o_" + x));
cruiseSailingDropDown.click();
cruiseSailing.click();
Thread.sleep(2000);
if(errorMessage .isDisplayed){
System.out.printLn("Error message is displayed")
cruiseSailingDropDown.click();
cruiseSailing.click();
}else{
proceed further to the next step
私はcruiseSailingのwebelementのための別のIDを生成する方法を教えてください。
あなたの返信ありがとうございます。私は質問がありました。したがって、2番目のアプローチでは、元のメソッドを呼び出して、ifブロック内でcruiseSailingDropDown.click()およびcruiseSailing.click()を使用しないことをお勧めします。しかし、私がこのブロックから削除した場合、私のコードは単にエラーメッセージをコンソールに送り、cruiseSailing要素の新しい値を呼び出すことなくさらに進めます。あなたが提供した最初のアプローチが私のクラスにもっと多くのコードをもたらすので、2番目のアプローチをどのくらい正確に使うべきかを指定できますか? – GordonFreaman
元のメソッドを呼び出すと、ここではコードのブロックがcruiseSailingに新しい値を割り当ててドロップダウンから同じコードをクリックします。私はあなたが提供しているブロックが失敗の場合に同じブロックを呼び出す方法であると仮定しています。 – Amit
これは別の方法ではなく、クラス内のアクションだけです。しかし、とにかく、あなたは何とか私を助けました。ありがとう。 – GordonFreaman