C# Selenium Stale Reference Exception nur bei kompilierter QuelleC#

Ein Treffpunkt für C#-Programmierer
Anonymous
 C# Selenium Stale Reference Exception nur bei kompilierter Quelle

Post by Anonymous »

Ich verwende Selenium 4.25 in einer C#-Konsolen-App mit ChromeDriver v118 und erhalte eine Ausnahme aufgrund einer veralteten Referenz, jedoch nur, wenn die kompilierte App ausgeführt wird. Beim Debuggen über Visual Studio funktioniert die App absolut einwandfrei. Ich kann nur davon ausgehen, dass das DOM viel schneller aktualisiert wird, wenn es außerhalb von VS2022 ausgeführt wird, was den Fehler verursacht, aber das ist eine reine Vermutung.
Kann jemand eine Problemumgehung oder Lösung oder einen geeigneten Weg vorschlagen? um das zu debuggen?

Code: Select all

// 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
Bearbeiten>>>>>>>>>>>>>>>>>>
Ich habe es mithilfe von Aktionen geschafft, dies zum Laufen zu bringen Anstelle einer Hacking-Mausbewegungsmethode müssen Sie jedoch ärgerlicherweise eine Webdriver-Wartezeit verwenden, bevor jeder Befehl den Dom-Bereitschaftsstatus überprüft. Selenium sollte eine bessere Methode zum Warten auf den Abschluss von Ajax und Skripten haben, da aktuelle Methoden ziemlich schlecht und unzuverlässig erscheinen /p>

Code: Select all

 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();

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post