異なる数の要素で動作するようにこのメソッドを変更するにはどうすればよいですか? たとえば、3つの要素と5つの要素がある場合があります。 私は、このループがそれを見つけることができる限り要素を探して、そうでなければ壊れることを望んでいます。 現在、要素が3つしかない場合、「要素を特定できません」というエラーが発生し、テストは失敗します。
public void checkProductsInOrder() {
for (int i = 1; i <= 5; i++) {
WebElement element = driver.findElement(By.xpath("(//td[@data-id=\"product_name\"])[" + i + "]"));
wait.until(ExpectedConditions.visibilityOf(element));
productsInOrder.add(element.getText());
}
回答 2 件
これはSelenium固有のものではありません(この場合、より良い解決策があるようです)が、APIが複数のオプションを提供しない場合があるため、知っておく価値があります。
Javaでファイルから行を読み取るときの一般的なパターンです。 whileループの前に変数を宣言し、条件内で変数を割り当てて比較します。
findElement
もリファクタリングします 読みやすさを向上させる独自の方法に。private WebElement findElement(final int num) { return driver.findElement( By.xpath("(//td[@data-id=\"product_name\"])[" + num + "]") ); }
メソッドは次のようになります。
WebElement element; int count = 0; while ((element = findElement(count++)) != null) { wait.until(ExpectedConditions.visibilityOf(element)); productsInOrder.add(element.getText()); }
関連記事
- Excelで空のスペースをフィルターで取り除く他の方法はありますか?
- PHPでmysqlへの長いメソッド呼び出しを分割します
- http応答全体をバイトスライスに変換するGohttpメソッドはありますか?
- Pythonリストの要素を切り替える方法はありますか?
- Swiftでは、配列の要素を複数の変数に割り当てる方法はありますか?
- javascriptの値を比較する方法はありますか?
- net MVCに、ローカルマシンにないファイルにデータベースの日付をエクスポートし、添付ファイルとして電子メールで送信する方法はありますか?
- DOM要素を作成するForループのJSON「has」メソッド
- そのようなnumpy配列を作成するためのより良い方法はありますか?
- 再帰的/反復可能なプロパティを持つ要素にCSS:nth-childを実装するためのより良い方法はありますか?
関連した質問
- SeleniumとJavaを使用してliアイテムをクリックするにはどうすればよいですか?
- WebElement getText()空の値を返します
- Javaセレンを使用してクレジットカード番号を入力するにはどうすればよいですか?
- ページ上のボタンの位置を計算します
- SeleniumでのElementNotInteractable例外
- Seleniumを使用してクリックできる要素のhref属性を取得できないのはなぜですか
- Pythonセレンプレスctrl + vを同時に
- Jenkins:ChromeDriverはシェルスクリプトからPATHを更新し、新しいバージョンを使用します
- リスト内のすべてのアイテムに文字列の文字が含まれていることを確認する方法
- SeleniumWebdriverで要素を検索するときに '{}'。format()を適切に使用する方法
findElements
を使用できます 一致したすべての要素を見つけて、一致した要素のみのループを繰り返すメソッド。findElements
methodは、ロケーターに基づいてすべての一致した要素を検索します。変更されたコードを確認してください