当前位置: 首页 > 知识库问答 >
问题:

StaleElementReferenceException:过时的元素引用:

甘君之
2023-03-14
{
"folderType": 3,
            "createdDate": "02.09.2014 11:57:28.UTC",
            "modifiedDate": "02.09.2014 11:57:28.UTC",
            "folderName": "Enterprise",
            "folderId": "baebc0fb-38cb-4300-9bd1-9b98fa622e4a",
            "widgetType": null,
            "enterpriseId": "366fc1f1-670d-41bc-905e-bc80accd2537",
            "parentFolderId": "",
}
{
"folderType": 3,
            "createdDate": "02.09.2014 11:57:28.UTC",
            "modifiedDate": "02.09.2014 11:57:28.UTC",
            "folderName": "Enter",
            "folderId": "6671ca49-9637-488e-9a0e-f7dbf415a542",
            "widgetType": null,
            "enterpriseId": "366fc1f1-670d-41bc-905e-bc80accd2537",
            "parentFolderId": "",
}

我需要访问'Enterprise'和'Enter'文件夹的folderId。

这是我的代码:

字符串S1=driver.findElement(By.xpath(“//SPAN[.='\”Enterprise\“']/祖先::pre/follows-sibling::pre[1]/SPAN[2]”)).getText();

String s2=driver.findElement(By.xpath("//span[. = '\"Enter\"']/ancestor::pre/following-sibling::pre[1]/span[2]")).getText();

我想打印字符串s1和s2的值,而不带COTES。我可以访问'Enterprise'文件夹ID,但无法访问'Enter'文件夹ID。因为“Enter”folderId是新创建的文件夹。

对于出现在cotes之间的每个字段,下面是FORAMT HTML的一般代码:

<pre>            <span class="cm-string">"folderName"</span>: <span class="cm-string">"Enter"</span>,</pre>
<pre>            <span class="cm-string">"folderId"</span>: <span class="cm-string">"6671ca49-9637-488e-9a0e-f7dbf415a542"</span>,</pre>

我可以使用chrome Developer工具选择Enter folderId,如下所示:

$x("//span[. = '\"Enter\"']/ancestor::pre/following-sibling::pre[1]/span[2]")
[<span class=​"cm-string">​"6671ca49-9637-488e-9a0e-f7dbf415a542"​</span>​]

Eclipse中的实际输出:线程“main”org.openqa.selenium.StaleElementReferenceException:stale元素引用:元素未附加到页面文档(会话信息:chrome=37.0.2062.124)

共有1个答案

景恩
2023-03-14

StaleElementReferenceException是由于findElement()方法访问的元素不可用。

使用以下示例代码等待元素的可见性:

private static WebElement findElement(WebDriver driver, By locator) {
    Wait<WebDriver> wait = new FluentWait<WebDriver>(driver)
            .withTimeout(90, TimeUnit.SECONDS)
            .pollingEvery(5, TimeUnit.SECONDS)
            .ignoring(NoSuchElementException.class, StaleElementReferenceException.class);
    return wait.until(ExpectedConditions.visibilityOfElementLocated(locator));
}

阅读更多信息...

 类似资料:
  • 我在我的selenium java项目中不断收到一条错误消息。

  • 嗨,我是硒的新手 我正在使用,已经尝试了和驱动程序。 我正在运行一个循环。有趣的是,循环有时会工作3、2次,它并不总是在同一次迭代中失败。我假设它与某种竞争条件有关(例如等待页面加载)。如果我在调试模式下运行,它似乎可以完美地工作。 我已经尝试了其他答案的建议,比如显式等待和隐式等待,但仍然没有帮助。也许如果你看到密码你可以帮我一把。 这是一个循环。 解决方案 解决方案是彻底破解。我仍然不明白,但

  • 我有这个网站:http://embed.plnkr.co/Bs5iDqtXSSnvye2ORI6k/preview 代码: 和以下规格: 这种配置: 当我运行Protractor时,会出现以下错误: StaleElementReferenceError:过时元素引用:元素未附加到页面文档(会话信息:chrome=43.0.2357.81) (驱动程序信息:chronidriver=2.15.322

  • 我试图理解为什么在我试图显示从网站获取的项目时会出现错误。我也在使用谷歌chrome浏览器。 这是我代码的其他部分 每当我使用"chromeDriver.FindElement(By.ID(something.link.text))。单击();",它会给出一个错误。我不能显示我提取的数据。 在错误消息中,它显示“OpenQA.Selenium.StaleElementReferenceExcept

  • 好的,我阅读了所有其他的链接,我尝试了上述不同解决方案的变体,但是它们都不适合我。 我的问题是,我有以下代码: 然而,我得到了以下错误: 这是篮子图标的css路径,它在菜单上。 网站是GWT,步骤如下:1。点击物品添加到购物篮2。增加到第三篮。点击篮子进入篮子。 然而,我似乎无法做到这一点。

  • 这是HTML结构如下所示 错误跟踪为: