Wygląda na to, że cierpisz na Stale Element.
Każdy WebElement że selen wyszukuje jest rzeczywiście odniesienie do elementu wewnątrz DOM
Czasami JavaScript używanych w witrynie zniszczy i odtworzyć element, kiedy to nastąpi istniejące odniesienia staje się przestarzały i zobaczysz StaleElementReferenceException (Przynajmniej tak się nazywa w języku Java, powinieneś zobaczyć coś bardzo podobnego).
Tak więc, jeśli kiedykolwiek zobaczysz wyjątek StaleElementReferenceException lub komunikat informujący, że "element nie jest już dołączony do DOM", oznacza to, że odwołanie do elementu w DOM, który był wcześniej używany, nie jest już ważne, ponieważ element, który odniesienie do zostało zniszczone.
Nie zawsze jest to oczywiste wizualnie, ponieważ pierwotny element mógł zostać zniszczony, a następnie odtworzony identyczny, jest to jednak nowy element, więc trzeba utworzyć nowe odniesienie do interakcji z nim.
Sposób na utworzenie nowego odniesienia polega na ponownym odnalezieniu elementu.
Z twoich pytań nie wynika jednoznacznie, ale zakładam, że pojawia się problem podczas przeglądania listy elementów kotwicy po znalezieniu stołu. W takim przypadku sugeruje, że tabela została zniszczona i odtworzona między punktem, w którym znalazłeś element tabeli, a następnie zaczęła się iterować przez elementy kotwiące wewnątrz stołu.
W takim przypadku należy ponownie znaleźć tabelę. Przydatną metodą jest poczekanie, aż stół stanie się nieaktualny, zanim spróbujesz go znaleźć. W ten sposób możesz być dość pewny, że dowolny skrypt JavaScript na stronie, który niszczy tabelę, a następnie ponownie ją tworzy, zakończył przetwarzanie. Model .NET ExpectedConditions class nie jest tak dojrzały jak Java ExpectedConditions class. Sugerowałabym przejrzenie niektórych Java i przeniesienie ich do .NET (powinno być dość trywialne, struktura jest dość podobna), szczególnie interesująca jest Java, która czeka, aż element stanie się nieaktualny.
Jaką wersję Selenium? Jaka przeglądarka i wersja tej przeglądarki? Próbowałem za pomocą selektora CSS równoważnego z zapytaniem XPath? Czy ty * potrzebujesz * czekania? – Arran
Cześć Arran, używam chromeedriver_win_26.0.1383.0 a selen wersja 2 ... nie próbowałem selektorów css. Szczerze mówiąc nie sądzę, że muszę czekać, ponieważ i tak nie zmieniam dominu, zanim zadzwonię, ale ponieważ przekazano mi element czerpiący oldElementReferenceException ", który nie jest już dołączony do DOM" Zakładam, że w jakiś sposób wstrzymałem oczekiwanie ... –
Jaką masz wersję Chrome? Selenium wersja 2 punkt co? Najnowszym jest v2.31, czy go używasz? – Arran