Java および Selenium WebDriver で xpath を使用して、Web ページの XML ツリーからノードを選択しています。class = "red-button" のハイパーリンクであり、class = "step" の div 要素の子孫 (直接の子ではない) であるノードを選択する必要があります。これは私のコードです:
List<WebElement> goButton = driver.findElements(By.xpath("/div[@class=\"step\"]/a[@class=\"red-button\"]"));
if(goButton.get(0)!= null){
continueButton.get(0).click();
}
動的に読み込まれるため、赤いボタン要素が表示されるまで待つ必要があります。これが、findElement() だけでなく、findElements() メソッドを使用することにした理由です。私の理解では、findElements() は、要素が見つかるかタイムアウトするまで DOM をプールします。コードを実行すると、次のようになります。
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
これは、goButton が null であることを意味するため、WebDriver は要素を見つけることができませんでした。Java ロジックで何か間違ったことをしていますか、それとも xpath クエリを修正する必要がありますか?