2016-06-13 7 views
0

Javaを使用してSeleniumを使用しています。SeleniumのStalelement例外

古い要素の例外が発生しており、問題を特定できないようです。

私はカルーセルと相互作用しています(下の画像を参照)。カルーセル内のすべての車両をリストに入れ、リスト内の各Web要素からテキストを取得しようとしています。リストには8つの要素が含まれています。私のコードがカルーセルの最後のページ(この場合はリストの6番目のインデックス)とやりとりすると、古い要素の例外がスローされます。

List<WebElement> vehiclesInCarousel = driver.findElements(By.cssSelector("div[data-qaid='cntnr-frntlnlstng-carousel'] ul[class='slider-list'] li[class='slider-slide']")); 

enter image description here

+0

デバッグなしで根本原因を見つけることは困難です。しかし、私は通常、複数の要素を取得するのではなく、要素を1つずつ取得することでこれを解決します。まず、車両を数え、「:nth-​​child」を使ってアイテムを取得し、それを1つずつテストします。 – Buaban

+0

@Buabanそれはカルーセルの3番目のページであるインデックス6で起こります。インデックス6より前のすべての要素は期待どおりに機能しますが、インデックス6以上にアクセスしようとすると古い要素の例外が発生します。 – Robben

+0

アプリケーションで何かを実行するため、第6要素リストが変更される可能性があります。それで、リストにそれらを保存するのではなく、要素を取得してアクションを1つずつ実行することをお勧めします。 – Buaban

答えて

0

失効要素参照例外は二つののいずれかの場合にスローされる:ここ

Iがリストにカルーセル内のすべての車両を配置コードである

  1. 要素が完全に削除されました。
  2. 要素はDOMに接続されなくなりました。

はいあなたが探している要素が表示されていますが、上記の2つの理由(主に)のためにStaleElementExceptionが表示される可能性があります。

対処方法this

関連する問題