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