2017-06-06 4 views
2

私のテストではSelenium.WebDriverSelenium.Support 3.0.1を使用していますが、より高いバージョンへの更新後に私のコードがエラーをスローします。Selenium更新後のStaleElementException

失敗コード:

// Element locating   
// [FindsBy(How = How.ClassName, Using = "dot")] 
// private IList<IWebElement> gameDots { get; set; }   

for (int i = 0; i < levelIndicators.Count; i++) 
{ 
    Browser.Action.ClickAndHold(gameDots[0]); 
    foreach (IWebElement gameDot in gameDots) 
    { 
     Browser.Action.MoveToElement(gameDot); 
    } 
    Browser.Action.MoveToElement(gameDots[0]) 
     .Build() 
     .Perform(); 
} 

ブラウザクラス:私はPerform()方法でライン上のStaleElementReferenceException取得していセレンのいずれかの新しいバージョンにアップデートした後

public static Actions Action { get; set; } 
public static IWebDriver Driver { get; set; } 

static Browser() 
{ 
    Action = new Actions(Driver); 
} 

。 3.0.1にダウングレードした後、再び動作します。

OpenQA.Selenium.StaleElementReferenceException:古い要素参照:(:クロム= 58.0.3029.110セッション情報)(ドライバ情報:要素がページの文書に添付されていないchromedriver = 2.29.461591(62ebf098771772160f391d75e589dc567915b233)、プラットフォームのWindows = NT 10.0.15063 x86_64で)

私が意図したとおりに動作している任意のActionsすべてをやっずにgameDot[0]要素と対話しようとします。

答えて

0

同じ問題があります。最初のクリックはうまく動作し、2回目のクリック(DOM変更なし!)は例外をスローします! action.clikc(clikckingElement).build.performをclickElement.Click()に置き換えてください。しかし、それは確かにバグです!

すべてが59。crhome vで罰金だったが、セレン3.0.1の代わりに、最新の3.4

+0

私は、私は、静的なアクションを使用していますことを発見し、それは同様にすべての以前に実行されたアクションを繰り返します。だから私はそれを使用している各拡張メソッドでアクションのインスタンスを作成します。これは、私の問題の一部を削除しましたが、すべてではありません。 – nEkis

+0

私は\ clickを使用する予定があるたびに要素を再作成します。 –

+0

要素ではなく、 'Actions'オブジェクトのインスタンスです。 – nEkis

関連する問題