我的超文本标记语言-Page包含(除其他内容外)以下内容:
<ol id="links">
<li id="links_1"><a href="http://stackoverflow.com">stackoverflow</a></li>
</ol>
在测试页面的代码中,我将执行以下操作:
el←FindElementById'links_1'
(ACTIONS.MoveToElement el).Build.Perform
这个和
EXCEPTION: stale element reference: element is not attached to the page document
(Session info: chrome=81.0.4044.129)
然而,这个错误似乎并不合理,因为元素仍然是活动的:
el.Displayed
1
el.Text
stackoverflow
el.Location
{X=56,Y=282}
我如何解决这个问题?
(环境是APL。我在这里省略了一些APL细节,因为我担心它们可能会避免从核心问题上“分散注意力”)
在发帖前的研究过程中,我看到了一个问题:元素未附加到页面文档,但似乎不适用:
FindElementById
,并在找到它后立即访问它。DOM不变,页面是静态的
我也翻看了参考资料,但这种解释无济于事。
此外,没有循环进行,也没有任何东西改变页面。这真的很简单:GoToUrl*Find*MoveToElement。
我删除了chromedriver标签,因为我可以用Firefox和geckodriver重新编程。然而,在geckodriver中,我得到了“异常:以前没有见过的Web元素引用:”当我执行MoveToElement
-但我可以执行el。单击
,以与Chrome完全相同的方式访问其属性。
更新:一位同事对此进行了更深入的调查(超出了我的舒适区),发现在抛出这个“过时的异常”之前,有一个404异常(我不知道如何正确地表达它,以及它到底发生在哪里)。我只知道404是一个HTTP状态码——这就是它对我的全部意义。但很明显,浏览器没有被要求在任何地方导航,所以我不能与HTTP404有关联。这是否给那些更熟悉WebDriver内部结构的人敲响了警钟?
这是一个复杂的多层问题,但当我最终删除所有层时——它起作用了!导致这个问题的关键因素:
ACTIONS
,但没有意识到一个关键特性:它不断构建一系列操作,任何构建。执行...-刚刚添加到其中的步骤。解决方案:为每次运行创建单独的实例(可能,因为它相当轻量级)或调用ACTIONS. Reset
(需要WebDriver4)。我从来没有遇到过WD4的问题(尽管它仍然是alpha)-但这给了切换的最终理由!这是HTML结构如下所示 错误跟踪为:
我在我的selenium java项目中不断收到一条错误消息。
我正在尝试读取联系人页面中的数据,但遇到此异常。
我试图理解为什么在我试图显示从网站获取的项目时会出现错误。我也在使用谷歌chrome浏览器。 这是我代码的其他部分 每当我使用"chromeDriver.FindElement(By.ID(something.link.text))。单击();",它会给出一个错误。我不能显示我提取的数据。 在错误消息中,它显示“OpenQA.Selenium.StaleElementReferenceExcept
我的程序抛出一条错误消息“stale element reference:element未附加到页面文档”。当我查看前面的帖子(如Python Selenium陈旧元素修复)时,我发现我没有在调用click函数后更新url。我更新了网址。然而,它并没有解决这个问题。谁能指出我哪里出错了?下面是我的代码: