如果 Selenium 抛出 StaleElementReferenceException 它通常是(?),因为网页(DOM)Selenium“拥有”的状态由于外部干扰而发生了变化,但是当我在声明frameToBeAvailableAndSwitchToIt
之前添加时我开始得到它。switch
我的代码:
driver.findElement(By.xpath(xpDownArrow)).click();
WebElement iframeElement = driver.findElement(By.xpath(xpIframe));
wait.until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(By.xpath(xpIframe)));
driver.switchTo().frame(iframeElement);
最初我的代码只包含第 1、2 和 4 行,它们大部分时间都在工作,但有 10-20% 的执行失败,因此我添加了第 2 行,但现在我StaleElementReferenceException
每次执行这段代码时都得到了。我不明白。为什么第 3 行会更改 DOM?这不是推荐的执行方式switch
吗?