我已經使用點擊頁面上的某些下拉菜單下面的方法:爲什麼在下面的方法中拋出StaleElementReferenceException?
protected void selectIthElementOffAllDropDowns(String selectElement, int entryOfDropdown) {
ICollection<IWebElement> allElements = driver.FindElements(By.CssSelector(selectElement));
foreach(IWebElement element in allElements) {
if(element.IsDisplayed) {
new SelectElement(element).SelectByIndex(entryOfDropdown);
}
}
}
的代碼按預期執行時間70%左右。但是,它偶爾會拋出一個StaleElementReferenceException
。當這個被拋出它在該行拋出:
new SelectElement(element).SelectByIndex(entryOfDropdown);
什麼我不明白的是element.IsDisplayed
怎麼是真實的,但根據當元素已經完全或者刪除被拋出此錯誤的硒文檔here該元素不再附加到DOM。任何人都可以解釋如何引發這個錯誤?另外,爲什麼if語句中的條件是真的,如果這個錯誤被正確地拋出?
注:我使用chromedriver運行這些測試與OpenQA.Selenium