Ошибка staleElementReference в классе действий
Так как мы используем класс действия для обычно Click события. Почему-то я получаю исключение при каждом использовании класса действий. Он генерирует исключение StaleElementReference для каждого метода действия, не работающего для одного экземпляра.
Элемент не может щелкать во время отладки также. Когда я заменил его простым методом Click(), он работал нормально. Но я не могу использовать метод щелчка, основанный на какой-то другой исключительной зависимости.
Что могло пойти не так,
using OpenQA.Selenium.Interactions;
Actions action = new Actions(driver);
action.MoveToElement(WebElement).Click().Perform();
Я что-то пропустил?
2 ответа
Вам нужно снова получить элемент (если он сейчас даже кликабелен).
IWebElement WebElement;
...
By byLocator = By.Id("myElementId");
WebElement = driver.FindElement(byLocator);
Actions action = new Actions(driver);
action.MoveToElement(WebElement).Click().Perform();
Элемент, к которому вы пытаетесь получить доступ, больше не отображается на странице. Элемент все еще может находиться на странице, но вы, возможно, переместились по всей странице после нахождения элемента, что означает, что это новая версия элемента, к которой пытается обратиться драйвер, а старая исчезла.
Снова выполните driver.findElement, а затем используйте действия, для которых необходимо перейти, если вы уверены, что элемент все еще отображается.