Может ли кто-нибудь предложить обходной путь или решение, или правильный способ отладить это?
Код: Выделить всё
// 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"));
Подробнее здесь: https://stackoverflow.com/questions/793 ... led-source
Мобильная версия