私のテストではSelenium.WebDriver
とSelenium.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]
要素と対話しようとします。
私は、私は、静的なアクションを使用していますことを発見し、それは同様にすべての以前に実行されたアクションを繰り返します。だから私はそれを使用している各拡張メソッドでアクションのインスタンスを作成します。これは、私の問題の一部を削除しましたが、すべてではありません。 – nEkis
私は\ clickを使用する予定があるたびに要素を再作成します。 –
要素ではなく、 'Actions'オブジェクトのインスタンスです。 – nEkis