Исключение устаревшей ссылки C# Selenium только в скомпилированном исходном кодеC#

Место общения программистов C#
Ответить
Anonymous
 Исключение устаревшей ссылки C# Selenium только в скомпилированном исходном коде

Сообщение Anonymous »

Я использую Selenium 4.25 в консольном приложении C#, использующем ChromeDriver v118, и получаю исключение устаревшей ссылки, но только при запуске скомпилированного приложения. При отладке через Visual Studio приложение работает абсолютно нормально. Я могу только предположить, что DOM обновляется намного быстрее при работе за пределами VS2022, что вызывает ошибку, но это полное предположение.
Может ли кто-нибудь предложить обходной путь или решение, или правильный способ отладить это?

Код: Выделить всё

// get cartcount
string cartcount = driver.FindElement(By.XPath("div[3]/div[2]/div/div/span")).Text;
Console.WriteLine("cartcount:" + cartcount);
while (cartcount != "0")
{
ele2 = driver.FindElements(By.XPath("//*[@aria-label='cart']"));
// STALE REFERENCE THROWN ON BELOW LINE
Point classname = driver.FindElement(By.XPath("(//*[@aria-label='cart'])[1]")).Location;
int xcordi = classname.X;
............ etc etc
Редактировать>>>>>>>>>>>>>>>>>>>>>
Мне удалось заставить это работать с помощью действий вместо хакерского метода перемещения мыши, но, к сожалению, вам приходится использовать ожидание веб-драйвера перед каждой командой, проверяющей состояние готовности dom.. Selenium должен иметь лучший метод ожидания завершения ajax и сценариев, поскольку текущие методы кажутся довольно плохими и ненадежными.. < /p>

Код: Выделить всё

 new WebDriverWait(driver, TimeSpan.FromSeconds(120)).Until(d => ((IJavaScriptExecutor)d).ExecuteScript("return document.readyState").Equals("complete"));
actions.MoveToElement(driver.FindElement(By.XPath("(//*[@aria-label='cart'])[1]"))).Click() .Perform();

Подробнее здесь: https://stackoverflow.com/questions/793 ... led-source
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»